使用varibale更改对象的全局变量值以访问对象的全局变量

时间:2015-10-26 08:11:19

标签: python

experiment.py

global x
x = False

class func1:        

    def __init__(self):
        pass

    def hello(self):
        # global x
        print x

new.py

import experiment

object = experiment.func1()
z = "x"
experiment.z = True        # Expection is experiment.z should work as experiment.x 
experiment.hello()

输出:#o / p应为true,因为我正在努力实现t.x = True

>>> 
False
>>>

问题是:有没有办法做到这个或这个概念错了?

2 个答案:

答案 0 :(得分:0)

首先,您的代码中存在许多错误以及一些不一致。

您刚刚将新属性添加到func1的实例。

z = "x"
t.z = True

这可能就是你要找的东西:

<强> exp.py

x = False


class Test(object):

    def __init__(self, x):
        self.x = x

    def hello(self):
        print self.x

t = Test(x)
t.hello()

<强> newp.py

from exp import Test, t

t.x = True
t.hello()

>>> False
>>> True

答案 1 :(得分:0)

使用setattr(对象,名称,值)

https://docs.python.org/2/library/functions.html#setattr