我希望你做得很好。這個問題實際上是擺脫了對基類的引用。參考父母的班級方法,不用父母的班級名稱
基本上我想要在類級別而不是實例級別使用父級方法來收集子級類方法的所有方法。但是,我被告知基類名稱很長。
第一件作品,但由於長名稱真的很煩人。即使在乾淨的版本中,我也必須每次都做。
我保證人們不會在B中的任何一個孩子中定義另一種方法「吃」。我真的可以擺脫基類引用,以便我可以使用@eat嗎?
class IDontWantToDoThisButNameHasToBeThisLong(object):
a = []
@classmethod
def eat(cls, func):
cls.a.append(func)
class B(IDontWantToDoThisButNameHasToBeThisLong):
@IDontWantToDoThisButNameHasToBeThisLong.eat
def apple(self, x):
print x
IDontWantToDoThisButNameHasToBeThisLong.eat(lambda x: x+1)
x = B()
IDontWantToDoThisButNameHasToBeThisLong.a[0](x, 1)
print IDontWantToDoThisButNameHasToBeThisLong.a[1](1)
乾淨的版本:
class A(object):
a = []
@classmethod
def eat(cls, func):
cls.a.append(func)
class B(A):
@A.eat
def apple(self, x):
print x
A.eat(lambda x: x+1)
x = B()
A.a[0](x, 1)
print A.a[1](1)
真誠,