从该类访问Python实例var

时间:2012-03-31 14:16:20

标签: python instance-variables

我想从__init__之外的类中访问实例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?

3 个答案:

答案 0 :(得分: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 :(得分:1)

你不能在python类中拥有自由站立的代码。 你可以从另一种方法访问self.nombre。

  def foo(self):
     print self.nombre

答案 2 :(得分:0)

当你打电话时

print self.nombre

该对象尚未构建(在评估该语句时没有Borg的实例),因此没有自我也没有nombre。如果你想访问nombre,首先需要构建对象:

pingus  = Borg("varString")

然后访问nombre:

print pingus.nombre