从另一个模块访问变量

时间:2020-10-01 02:54:09

标签: python variables module

尽管我收到了两个关于我的问题的答案(对此我很感激),但它们并不能回答我的问题,或者我听不懂答案。 因此,这是我要执行的操作的详细说明: 我有两个模块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中声明“线” ,然后将其在b.py中用作输入。

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

2 个答案:

答案 0 :(得分:0)

当前设置存在问题-在 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()

答案 1 :(得分:0)

如果我对您的理解正确,则应该这样做:

#a.py

Line = 'Bob=Male=40'

# b.py
from a import Line # assuming a.py and b.py are in the same directory

...