クラス/インスタンス変数がどのようにPythonで動作するかを理解する上で問題があります。私は、私はこのコードをしようとすると、リスト変数はクラス変数にあると思われる理由を理解しないpythonクラスのインスタンス変数とクラス変数
class testClass():
list = []
def __init__(self):
self.list.append('thing')
p = testClass()
print p.list
f = testClass()
print f.list
出力:
['thing']
['thing', 'thing']
と私はこれを行うときには、変数のインスタンスであるように思わ
class testClass():
def __init__(self):
self.list = []
self.list.append('thing')
p = testClass()
print p.list
f = testClass()
print f.list
出力:
['thing']
['thing']
の多くのおかげ
JON
私が正しく理解していれば、Pythonの構文に関する特定の設計上の意思決定の根拠を求めています。そのような質問の場合、最善の答えは「それが言語の精神に合っている」か、もっと賢明に「創造者に尋ねる」ことです。 – Xion
OK変数はデフォルトでクラス変数で、私の混乱の原因となっていたはずです。私の質問だったはずです。変数はデフォルトでクラス変数になります。 –
@jonathantopfいいえ、変数はデフォルトではクラス変数ではありません。 Pythonでは、varablesを宣言しません。その点に関しては、実際には変数ではありません(Pythonは_variableless_lanuageです)。名前だけです。そして、あなたは宣言したり、名前をつけたりすることはありません。あなたはそれらをオブジェクトにバインドします。また、実行時の各オブジェクトには、名前からオブジェクトへの辞書があります。 2つのオブジェクトが同じクラスのものであっても、非常に異なる辞書を持つことができます。 – rodrigo