在我的例子中如何访问变量外部类?

时间:2016-02-09 19:33:08

标签: python python-2.7 class oop

class testing():
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def house(self):
        d = self.a+self.b+self.c
        print d

module="hello"
p = testing(1, 2, 3)
p.house()

如何从module课程中访问testing变量?我知道我可以通过执行以下操作将它作为参数添加到类构造函数中:

p=testing(1,2,3,module)

但我不想这样做,除非我必须这样做。还有哪些其他方法可以从module类中访问testing变量?

3 个答案:

答案 0 :(得分:6)

你只是引用它;您不需要任何特殊的全球许可来访问它。这不是最好的方法,但由于您还没有描述您的应用程序和模块化要求,我们现在可以做的就是解决您当前的问题。

顺便说一下,你的a,b,c引用是不正确的。见下文。

class testing():
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c
        self.greeting = module

    def house(self):
        d = self.a + self.b + self.c
        print d
        print self.greeting

module="hello"
p = testing(1, 2, 3)
p.house()

输出:

6
hello

答案 1 :(得分:1)

您可以使用globals()。但我不确定这是不是一个好主意。

class testing():
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def house(self):
        print(globals()['module'])
        d = self.a + self.b + self.c
        print(d)


module = 'here'
t = testing(1, 2, 3)
t.house()

输出:

# here
# 6

答案 2 :(得分:1)

也许我不明白这个问题,因为全局变量“module”是在你实例化类之前定义的,所以它已经有效了。

class testing():
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def house(self):
        d = self.a+self.b+self.c
        print module
        print d

module="hello"
p = testing(1, 2, 3)
p.house()

输出:

您好

6