以下のコードを定義したダッククラスビルクラスおよびテールクラス。私の質問は、方法についてはについて()の内部ダッククラス定義は、なぜbill.description
とtail.length
を書くことができますか? self
はここでは省略されていますか?はいの場合は、いつself
を省略できますか? __init__
の方法で省略することはできますか?次のようにPythonでは、selfを省略できますか?
class Bill():
def __init__(self, description):
self.description = description
class Tail():
def __init__(self, length):
self.length = length
class Duck():
def __init__(self, bill, tail):
self.bill = bill
self.tail = tail
def about(self):
print('This duck has a', bill.description, 'bill and a', tail.length, 'tail')
tail = Tail('long')
bill = Bill('wide orange')
duck = Duck(bill, tail)
duck.about()
出力はあなたがここで参照されているグローバル変数bill
とtail
を、定義されているので、ことを書くことができ、
実際にはグローバルスコープから 'tail'と' bill'という名前を使用します。作成を 'tail1 = Tail( 'long')'に変更してみてください。 - NameErrorが発生します。 –
なぜあなたは自己を省略したいですか?そのオブジェクトを参照するためにオブジェクトで使用されるPython言語固有の構造体。あなたがそれを使わないなら、あなたはグローバルな文脈を参照しています。 –
@WaxCage about()メソッドでself.bill.descriptionとself.tail.lengthを書けば、私のコードもうまくいくことを知っているからです。しかし、私は自己を省略することもできることに驚きました! – Nicholas