파이썬에서는 이전에 정의한 클래스 C
에 속성을 추가 할 수 있습니다. 그러나, 나는 list
에 속성을 추가 할 수 없습니다 - 결과 오류 메시지는 설명이 있음을 list
가 내장 된 타입이기 때문에 : 마찬가지로파이썬에서 동적으로 추가 된 속성을 가질 수있는 객체는 무엇입니까?
>>> class C: pass
...
>>> C.foo = 1
>>> C.foo
1
>>> list.foo = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't set attributes of built-in/extension type 'list'
, C
의 인스턴스에 속성을 추가 할 수 있지만, list
의 인스턴스가 아닙니다. 그러나이 경우, 오류 메시지가 훨씬 더 모호 :
>>> o = C()
>>> o.bar = 2
>>> o.bar
2
>>> o = []
>>> o.bar = 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'bar'
이유는 list
의 인스턴스에 구성원을 추가 할 수 없습니다? list
은 내장형이기 때문에 다시 나타 납니까?
더 일반적으로 파이썬의 어떤 객체가 동적으로 추가 된 속성을 가질 수 있습니까?
inbuilt 유형이 아닌 것으로 추측합니다. –
매우 관련이 있습니다. https://stackoverflow.com/questions/6738987/extension-method-for-python-built-in-types –