【发布时间】:2011-11-14 11:26:53
【问题描述】:
可以这样做:
class master:
@combomethod
def foo(param):
param.bar() # Param could be type as well as object
class slaveClass( master ):
@classmethod
def bar(cls):
print("This is class method")
slaveType = slaveClass
slaveType.foo()
class slaveInstance( master ):
def __init__(self, data):
self.data = data
def bar(self):
print("This is "+self.data+" method")
slaveType = slaveInstance("instance")
slaveType.foo()
combomethod 在“Creating a method that is simultaneously an instance and class method”中定义。
我的问题是,为什么会这样,默认的第一个参数不能用作组合类的参数?或者至少,为什么我不能将对象作为第一个参数传递给 classmethod?我知道 classmethod 和 instancemethods 之间的区别,我知道装饰器,但我可能不明白内置的 @classmethod 和 self 参数传递是如何进行的。有技术限制吗?或者,为什么combomethod 还没有内置?
【问题讨论】:
-
请不要在 SO 帖子中使用文字朗读(“smth”)。
-
我无法理解你在这里问的问题......
-
@Ignacio 我想知道我是否做错了,有没有更简单的方法?我认为可能有一些内置方法可以做同样的事情,如果没有,为什么不呢?
标签: python decorator instance class-method