假设我们有以下两个类:
class Class1:
def method(self):
print("Class1.method() with self =", self)
@classmethod
def clsmethod(cls):
print("Class1.clsmethod() with cls =", cls)
obj1 = Class1()
class Class2:
def method(self):
print("Class2.method() with self =", self)
@classmethod
def clsmethod(cls):
print("Class2.clsmethod() with cls =", cls)
obj2 = Class2()
对于正规的有界方法,很容易注入不同的self。我们只需要调用Class1
的method()
,但是obj2
作为self
:
>>> Class1.method(o2)
Class1.method() with self = <__main__.Class2 object at 0x...>
现在的问题是:除了类方法之外,我如何做类似的事情?你知道吗
>>> Class1.clsmethod(Class2)
Class1.clsmethod() with cls = <__main__.Class2 object at 0x...>
用什么来代替Class1
?使用type(Class1)
(“类的Class1
”类似于“类的obj1
”)的直观方法不起作用,因为类方法不是元类的属性。你知道吗
通过访问
__func__
属性,可以获得未绑定的函数对象。你知道吗相关问题 更多 >
编程相关推荐