2012-03-31 85 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

你出現壓痕被搞砸了,因爲你執行一個類的內部打印語句定義。 (並且'import sys'的縮進也是錯誤的。) – alan 2012-03-31 14:23:02

回答

4

這可能會更好。您應該封裝在一個方法的代碼,如:

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 2012-03-31 14:21:36

0

當你調用

print self.nombre 

對象尚未構造(沒有博格的實例時語句求),這樣就不是自我也不是虛無。如果您要訪問農佈雷首先需要構造對象:

pingus = Borg("varString") 

,然後訪問NOMBRE:

print pingus.nombre