Es ist wirklich wie "Was?"
Code in Frage
# -*- coding: utf-8 -*-
class Hoge():
def __init__(self, data=[]):
self.data = data
def add_data(self):
self.data.append(u"ʅ(´◔౪◔)ʃ")
if __name__ == "__main__":
hoge = Hoge()
hoge.add_data()
hoge2 = Hoge()
print hoge2.data[0]
Bei der Ausführung wird ʅ (´◔౪◔) ʃ
angezeigt.
???????
Wenn Sie Folgendes tun, werden Daten nicht von hoge2 geerbt
# -*- coding: utf-8 -*-
class Hoge():
def __init__(self):
self.data = []
def add_data(self):
self.data.append(u"ʅ(´◔౪◔)ʃ")
if __name__ == "__main__":
hoge = Hoge()
hoge.add_data()
hoge2 = Hoge()
print hoge2.data
Wenn Sie eine Zeichenfolge anstelle einer Liste einfügen, wird diese auch dann nicht vererbt, wenn Sie ein Argument in den Konstruktor einfügen.
# -*- coding: utf-8 -*-
class Hoge():
def __init__(self, data=''):
self.data = data
def add_data(self):
self.data = u"ʅ(´◔౪◔)ʃ"
if __name__ == "__main__":
hoge = Hoge()
hoge.add_data()
hoge2 = Hoge()
print hoge2.data
Warum... Warum übernimmt die Instanzvariable, wenn der Standardwert in das Argument des Konstruktors eingegeben wird?
Ich kenne die Ursache nicht, aber sei vorsichtig. Wenn Sie die Ursache kennen, würde ich mich freuen, wenn Sie einen Kommentar abgeben könnten.
Recommended Posts