我希望你做得很好。这个问题实际上是摆脱了对基类的引用。参考父母的班级方法,不用父母的班级名称
基本上我想要在类级别而不是实例级别使用父级方法来收集子级类方法的所有方法。但是,我被告知基类名称很长。
第一件作品,但由于长名称真的很烦人。即使在干净的版本中,我也必须每次都做。
我保证人们不会在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)
真诚,