2012-03-31 9 views
0

__init__以外のクラスからインスタンスvarにアクセスしたいのですが、私は立ち往生しています!そのクラスからPythonインスタンスのvarにアクセスする

import sys 

class Borg(object): 
    __shared_state = {} 
    def __init__(self, nombre): 
     self.__dict__ = self.__shared_state 
     self.nombre = nombre 

     print 'my instance vr::', self.nombre 

     # panga = 'pangas' 

    panga = 'pangas' 


    print 'te copio con ' 


    print panga 

    #print self.nombre 


pingus = Borg('varString') 


print pingus.nombre 

私はprint self.nombreのコメントを解除した場合、私は "self.nombreが認識されない" ことをもらいますか?

このvarにアクセスするにはどうすればよいですか?

+1

あなたのインデントを使用して、クラス内のprint文を実行しているので、めちゃめちゃているように見えるあなたはノンブルアクセスしたい場合は最初のオブジェクトを作成する必要があります定義。 (そして 'import sys'の字下げも間違っています) – alan

答えて

4

これはうまくいく場合があります。あなたが好きな、方法でそのコードをカプセル化する必要があります:あなたは、オブジェクトがまだ構築されていません

print self.nombre 

を呼び出しているとき

import sys 

class Borg(object): 
    __shared_state = {} 
    def __init__(self, nombre): 
     self.__dict__ = self.__shared_state 
     self.nombre = nombre 

    def instance_method_1(self): 
     print 'my instance vr::', self.nombre 
     panga = 'pangas' 
     print 'te copio con ' 
     print panga 
     print self.nombre 


pingus = Borg('varString') 


print pingus.nombre 
pingus.instance_method_1() 
1

フリースタンディングコードをPythonクラスに含めることはできません。 別のメソッドからself.nombreにアクセスできます。

def foo(self): 
    print self.nombre 
+3

あなたはPythonクラスで自立型コードを持つことはできますが、クラスが定義されていれば実行され、インスタンス化されるときは実行されません。この時点で、 'self'は定義されていません。 – kindall

0

ので、そこ(その文が評価されボルグのインスタンスが存在しません)自己でもない人でもない。

pingus = Borg("varString") 

してからアクセスノンブル:

print pingus.nombre 
関連する問題