2011-07-02 11 views
7
class MyClass(object): 
    def __init__(self): 
     self.var = "hi" 

    def some_method(self): 
     print self.var 

#for the example below 
myClass= MyClass() 

私は以下の記述が同等であることを理解しています。Python "self" convention __init__ vs method

myClass.some_method() 
MyClass.some_method(myClass) 

それはobjectを取り、最初の引数some_methodからselfとして渡します。

しかし、私はやるとき:

myClass= MyClass() 

この流れはどのように機能するの?

私は少し異なると仮定していますし、いくつかの魔法は背後で起こります(誰かが割り当てるメモリがあります)。

これはどのようにして__init__(self)に変換されますか? __init__MyClassに何が渡されますか?

+1

ちょっと小さいニックネーム: 'object = MyClass()'はオブジェクトを再定義します。これはおそらくあなたがしたくないものです。 :) – mrb

+0

@mrb :)厄介な、厄介な(名前が変更されたオブジェクト - > myClass) – Nix

答えて

13

myClass= MyClass()MyClassのインスタンスを作成するために、MyClass.__new__メソッドを呼び出します。その後、MyClass.__init__がこのインスタンスを第1引数として呼び出されます。

オブジェクト:

は、doc object.__new__を参照してください。 __new__(cls [、...])

クラスclsの新しいインスタンスを作成するために呼び出されます。

オブジェクトです。 __init__(self [、...])

インスタンスの作成時に呼び出されます。

+2

これは完全な答えです。 –

2

MyClass()は、パラメータselfとして__init__(self)に渡される新しいオブジェクトを作成します。 selfに任意のフィールドを設定してから、MyClass()を返します。

関連する問題