我們可以做這樣的事情:使用相同的功能,實例和類方法在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