2017-12-01 1 views
0

의 속성에 액세스 할 수 없습니다는이 코드를 실행하면, 나는 오류 "AttributeError를 'NoneType'객체 '테스트'에는 속성이 없습니다"얻을 파이썬

누군가가 정확히 상속됩니다 무엇을 나에게 설명 할 수

class BaseClass: 
    def __new__(self, number): 
     self.test = 1 

class InheritedClass(BaseClass): 
    pass 

instance = InheritedClass(1) 
print(instance.test) 
기지에서? 파이썬 2와 3은 차이가있을 것입니다. 왜냐하면 "테스트"를베이스 클래스의 속성 필드에 넣어서 파이썬 2에서는 액세스 할 수 있지만 3에서는 액세스 할 수 없기 때문입니다.

+0

저는 이것이 중복 답변에서 논의되지 않았다고 생각합니다. 파이썬 2와 3 사이의 차이점은'__new __()'은 새로운 스타일 클래스, 즉'object'에서 명시 적으로 상속받은 클래스에만 존재한다는 것입니다. 코드에서'__new __()'는'None'을 반환하기 때문에 인스턴스가 없습니다.'__new __()'가 인스턴스를 반환해야하기 때문에'__new __()'도 Python 2에서 호출되지 않습니다. 이 후자의 답변에서 중복 답변을 자세히 설명합니다. – mhawke

답변

0

새로운을 초기화하기 "에서" "

class BaseClass: 
    def __init__(self, number): 
     self.test = 1 

class InheritedClass(BaseClass): 
    pass 

instance = InheritedClass(1) 
print(instance.test) 
+0

OP는 작동하는 코드뿐만 아니라 설명을 찾고 있습니다. – timgeb

0

새로운초기화 사이에 차이가 있습니다. 이와 같은 필드에 액세스하려면 init에서 호출해야합니다.

+0

OP는 작동하는 코드뿐만 아니라 설명을 찾고 있습니다. – timgeb

관련 문제