2011-01-01 12 views

答えて

7

違いは、あるケースでは、インスタンスを保持する変数selfを呼び出し、別のケースではobjectと呼んでいます。それが唯一の違いです。

変数selfは、Pythonでは明示的で、あなたが望むものを呼び出すことができます。 selfは、誰もが読みやすくするための規約です。例えば

、これはうまく動作します:

>>> class Foo(object): 
... def __init__(bippity, colour): 
...  bippity.colour = colour 
... def get_colour(_): 
...  return _.colour 
... 
>>> f = Foo('Blue') 
>>> f.get_colour() 
'Blue' 

しかし、それはかなり気紛らわしいです。 :)

2

これは言うのと同じです。

class Foo(object): 
    def __init__(self): 
     self.a="foo" 
    def __repr__(bar): 
     return bar.a 

変数名barには何の意味もありません。それはちょうどselfへの参照です。

2

他の人が指摘しているように、クラスメソッドの最初のパラメータの名前は単に規約に過ぎません。名前は任意に指定できます。 ただし、はありません。常にselfと名前をつけてください。そうしないと誰もが混乱します。特に、あなたの例ではobjectという名前をつけていますので、組み込みの名前があいまいであるため、重複しています。

関連する問題