0
I 클래스 데코레이터를 사용하고 있지만 내가 않은 setattr와 방법 설정 속성을 이해하지 못했지만,이 내 코드입니다 :__setattr__ 클래스 장식 파이썬
def cldecor(*par):
def onDecorator(aClass):
class wrapper:
def __init__(self, *args):
self.wrapped = aClass(*args)
def __getattr__(self, name):
return getattr(self.wrapped, name)
def __setattr__(self, attribute, value):
if attribute == 'wrapped':
self.__dict__[attribute] = value
else:
setattr(self.wrapped, attribute, value)
return wrapper
return onDecorator
@cldecor('data','size')
class Doubler:
def __init__(self,label,start):
self.label = label
self.data = start
def display(self):
print('{0} => {1}'.format(self.label, self.data))
하지만 난 수행 할 때
if __name__ == "__main__":
X = Doubler('X is ', [1,2,3])
X.xxx = [3,4,9]
print(X.xxx)
X.display()
내가이 출력이 있습니다
[3, 4, 9]
X is => [1, 2, 3]
내가 어떻게이 출력있는을 위해 할 수 있습니까?
[3, 4, 9]
X is => [3, 4, 9]
아마도 이것이 달성하기로되어 있다고 생각하는 것을 설명해주십시오. – Marcin
코드에서'* par'은 무엇을합니까? 당신은 그것을 사용하지 않은 상태로 두십시오 ... – glglgl
게시 된 코드는 귀하가 보여준 결과물을 생성하지 않습니다. 출력은''[3, 4, 9]입니다. \ X는 => [1, 2, 3]입니다. '' – AdamKG