インスタンスの名前に割り当てるとすぐに、クラス属性をシャドウするインスタンス属性が取得されます。
クラス属性に割り当てることができる唯一の方法は、インスタンスの属性ではなくクラスの属性に割り当てることです。あなたは、インスタンスを持っている場合、あなたは何をする必要があります。
x1.__class__.pi = 20
# If you're on Py3, or on Py2 and x1 is an instance of a new-style class,
# using type(x1) is slightly "nicer" than manually accessing dunder special
# variables, but unfortunately, it doesn't work on old-style class instances
# For new-style class instances though, the following is equivalent:
type(x1).pi = 20
あなたはx1
と同じタイプのすべてのインスタンスが変更を表示したい場合。これにより、クラス自体が__class__
(またはtype
関数)から取得され、それに割り当てられます。
誤っ属性と再びクラス属性を公開するインスタンスを作成した場合、あなたが行うことができます:
pi
名前付きインスタンスの属性が存在する場合は成功します
del x1.pi
、およびraise AttributeError
そうでない場合には(それクラス属性が存在する場合は削除しませんが、それを行うにはdel x1.__class__.pi
/del type(x1).pi
を実行する必要があります)。
あなたのクラスには 'pi'も定義されていません – lmiguelvargasf
typel @ lmiguelvargasfについてはごめん、投稿を編集しました –