2012-07-22 3 views
3

가능한 중복 :
Can set any property of Python object개체 클래스가 특성을 허용하지 않는 이유는 무엇입니까?

In [67]: obj = object()  
In [68]: obj.x = 42 
--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
/home/user/<ipython-input-68-0203a27904ca> in <module>() 
----> 1 obj.x = 42 

AttributeError: 'object' object has no attribute 'x'  
In [69]: class myc(object): 
    ....:  pass 
    ....:  
In [70]: my = myc()  
In [71]: my.x = 42 

은 모순처럼 보인다. 새 속성을 추가하지 않고도 클래스를 object과 유사하게 만들려면 어떻게해야합니까?

답변

2

대부분의 내장 유형은 각 인스턴스와 연관된 사전의 오버 헤드가 있으므로 사용자 정의 속성을 허용하지 않습니다. 사용자 정의 클래스는 기본 (가 __dict__ 속성을 통해 접근 가능)에 의해 이러한 사전을 가지고 있지만, 당신은 클래스 정의에

__slots__ = [] 

를 추가하여 생성을 방지 할 수 있습니다 - 자세한 사항은 documentation를 참조하십시오.

관련 문제