은 데이터 타입이 Bar
인 Foo
클래스를 가지고 있습니다. 일반화 된 "기본값"Bar.__init__()
을 만들 수 없습니다. Bar
개체는 Foo.__init__()
메서드로 전달됩니다.클래스 객체 데이터 타입 선언하기
파이썬에게이 유형의 datamember를 원한다는 것을 어떻게 알 수 있습니까?
class Foo:
# These are the other things I've tried, with their errors
myBar # NameError: name 'myBar' is not defined
Bar myBar # Java style: this is invalid Python syntax.
myBar = None #Assign "None", assign the real value in __init__. Doesn't work
#####
myBar = Bar(0,0,0) # Pass in "default" values.
def __init__(self, theBar):
self.myBar = theBar
def getBar(self):
return self.myBar
그림과 같이 "기본값"값을 전달할 때 작동합니다. 그러나 getBar
으로 전화 할 때 이 아니라이 내가 Foo.__init__()
함수에서 전달한 것을 되돌려받습니다. "기본값"값을 얻습니다. 내가 기대 것 같은
b = Bar(1,2,3)
f = Foo(b)
print f.getBar().a, f.getBar().b, f.getBar().c
이, 하지1 2 3
을 0 0 0
뱉어.
myBar
변수를 선언하는 데 신경 쓰지 않으면 getBar(self):
메서드 (Foo instance has no attribute 'myBar'
)에서 오류가 발생합니다.
내 개체에서 맞춤 datamember를 사용하는 올바른 방법은 무엇입니까?
는 소리. 그 계급은 무엇입니까? –