首页 > 解决方案 > 从另一个模块访问变量

问题描述

虽然我收到了两个关于我的问题的答案(对此我很感激),但他们没有回答我的问题,或者我无法理解答案。所以这里是我想要做的更详细的解释:我有两个模块 a.py 和 b.py

#a.py

from zzzz import *

Bob.Name = 'Jack'
Bob.Age = 65

print(Bob.Name, Bob.Gender,Bob.Age)


# b.py
class Record(object): 
    Name = ''
    Gender = '' 
    Age = ''
    
Line = 'Bob=Male=40'   ### This what I would like to come from a.py
M = Line.split('=')   

exec(M[0] + ' = ' + 'Record()')
exec(M[0] + '.' + 'Name'   + ' = ' + "'" + M[0] + "'")
exec(M[0] + '.' + 'Gender' + ' = ' + "'" + M[1] + "'")
exec(M[0] + '.' + 'Age'    + ' = ' + "'" + M[2] + "'")

print(Bob.Name, Bob.Gender, Bob.Age)

我运行 a.py 时得到的结果是:

Bob Male 40
Jack Male 65

这很好,它完全按照我的意愿工作。

我唯一想做的就是在 a.py 中声明“Line”,然后在 b.py 中将其用作输入。

基本上我想在另一个模块中创建一个对象,其中输入来自调用模块,并且能够在调用模块中使用“点表示法”。

标签: pythonvariablesmodule

解决方案


当前设置存在问题 - 在b.py中,您不进行任何导入;所以你不能访问其他地方定义的任何变量。

这是您可以尝试的一种方法。在a.py 中

class Dessert:
    def __init__(self, kind):
        self.kind = kind

    def get_menu(self):
        print('I am a:', self.kind)

b.py中:

from a import Dessert
c = Dessert('cookie')
d = Dessert('donut')
c.get_menu()
d.get_menu()

推荐阅读