如何从另一个模块更改类对象参数(python)

时间:2014-11-13 18:04:14

标签: python class import module attributes

所以我四处寻找并找不到答案。我想在模块中更改主文件中创建的对象的参数。例如,我在这里用一段简单的代码测试它:

- 这是我的主文件,我从中创建对象并定义一些属性

import class_test_2

class dog():
    name=''
    spots=0

    def add_spots(self):
        self.spots+=1

def main():

    fido=dog()
    fido.name='Fido'

    print('Fido\'s spots: ',fido.spots)

    fido.add_spots()

    print('Fido\'s spots: ',fido.spots)

    class_test_2.class_test()

    print('Fido\'s spots: ',fido.spots)


if __name__=='__main__':
    main()

- 这是模块,我想从中使用函数来更改主文件中的属性

from class_test_1 import dog

def class_test():
    fido.add_spots()

- 所以我的问题是我怎么能这样做/为什么上面这段代码不起作用? 自己运行主要功能显示每次打印时fido的点数增加1。然而,运行调用模块的代码会产生NameError,因此即使我已经设法导入它,我的模块也无法识别该类是否存在。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你的变量" fido"仅在您的" main"中定义功能。你必须提供你的" class_test"用变量函数。

例如:

 class_test_2.class_test(fido)

然后你的class_test函数得到一个参数。您可以自由选择名称。我在示例中使用了the_dog

def class_test(the_dog):
    the_dog.add_spots()

在这种情况下,the_dog指向dog类的同一个实例fido