큰 일을하기를 바랍니다. 이 질문은 실제로 기본 클래스에 대한 참조를 제거하는 것입니다.부모의 클래스 이름없이 부모 클래스의 메서드 참조
기본적으로 부모 클래스 메서드를 사용하여 인스턴스 수준 대신 클래스 수준에서 자식 클래스 메서드의 모든 메서드를 수집하려고합니다. 그러나 기본 클래스 이름이 정말 길다는 말을 들었습니다.
첫 번째 작품은 긴 이름 때문에 실제로 작동하지만 귀찮았습니다. 깨끗한 버전에서도 매번 A.eat를해야합니다.
저는 사람들이 B와 같은 다른 아이에서 "먹는"다른 방법을 정의하지 않겠다고 약속합니다. 실제로 @ class를 사용할 수 있도록 기본 클래스 참조를 제거 할 수 있습니까?
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)
,