Pythonデータモデルを理解していると、クラスとクラスインスタンスの両方にすべての属性を含む__dict__
オブジェクトが関連付けられています。しかし、私は少し具体的なクラスインスタンス(例えば、str
のインスタンス)が__dict__
属性を持たない理由について少し混乱しています。Python:組み込みクラスインスタンスに__dict__属性がないのはなぜですか?
私はカスタムクラスを作成する場合:私は内蔵のインスタンスで同じことをしようとした場合
>>> f = Foo()
>>> print(f.__dict__)
{'lastname': 'Smith', 'firstname': 'John'}
しかし:
class Foo:
def __init__(self):
self.firstname = "John"
self.lastname = "Smith"
その後、私は言ってインスタンス変数を取得することができますstr
で、私が取得:
>>> s = "abc"
>>> print(s.__dict__)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute '__dict__'
、なぜstr
のインスタンスは0を持っていません属性?
をそこでしょう'__dict __.__ dict__'にする必要があります - どのくらい深い再帰が必要ですか? –