Python:__ getattr__表示模块对象

时间:2016-12-22 05:52:44

标签: python python-2.7 python-3.x

假设我有一个名为mymodule的python模块,它具有以下结构:

""" mymodule.py """

mydata = {
    "x": 12,
    "y": 58
}

我想以下列方式访问数据:

""" main.py """
import mymodule

print(mymodule.x) # 12
print(mymodule.y) # 58

我应该将哪些内容添加到mymodule.py

我想知道Python 2.7Python 3的解决方案。

2 个答案:

答案 0 :(得分:1)

根据https://stackoverflow.com/a/7668273/783836,似乎可以通过将模块替换为您想要的类来完成:

# module foo.py

import sys

class Foo:
    def funct1(self, <args>): <code>
    def funct2(self, <args>): <code>

sys.modules[__name__] = Foo()

查看整个帖子的详细信息

答案 1 :(得分:0)

选项1

如果唯一的数据是xy,并且您不希望它是动态的,那么您可以执行以下操作:

""" mymodule.py """

mydata = {
    "x": 12,
    "y": 58
}

x = mydata['x']
y = mydata['y']

选项2

另一种选择是使用addict.Dict,但这需要在导入时进行一些更改。

""" mymodule.py """
from addict import Dict

mydata = Dict({
    "x": 12,
    "y": 58
})

然后使用它:

""" main.py""
from mymodule import mydata

print(mydata.x)
print(mydata.y)

知道你为什么需要它会更容易......