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