我们可以做这样的事情:使用相同的功能,实例和类方法在Python
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”定义。
我的问题是,为什么它是这样的,默认的第一个参数不能用作comboclass的参数。或者至少,为什么我不能将对象传递给classmethod作为第一个参数。我知道什么是classmethod和instancemethods和装饰器是什么区别,但我可能不明白,如何内置@classmethod
和self
参数传递。是否只有一些技术限制?或者为什么不是combomethod
已经内置?
请不要在SO帖子中使用文本说话(“smth”)。 –
我不能让你在这里问的头或尾... –
@Ignacio我想知道如果我做这一切都错了,是否有更简单的方法?我认为可能有某种方式可以做同样的事情,如果没有,为什么不呢? – Johu