在Lua脚本中,当我不得不写太多行时:
obj.age=17
obj.name="jack"
obj.country="US"
...
obj.weight=100
我可以使用_ENV
来简化代码:
_ENV=obj
age=17
name="jack"
country="US"
...
weight=100
也就是说,我可以避免重复输入obj.
,python中有没有办法做到这一点?我在net buf上搜索时一无所获。
我需要使用python脚本作为配置文件,后一种格式似乎更好。
答案 0 :(得分:3)
为什么不
obj = {
'age': 17,
'name': 'jack',
'country': 'US',
...,
'weight': 100
}
?换行符在这里不需要\
,因为它们位于一对大括号内。
当然,这会建立一个字典,但是您真的需要配置中的特定类的对象吗?
答案 1 :(得分:1)
您可以使用SimpleNamespace(仅适用于Python3)轻松做到这一点
import types
obj = types.SimpleNamespace(
age=17
name="jack"
country="US"
...
weight=100
)
答案 2 :(得分:0)
您真的一口气问了两个问题。
关于存储配置的第二点,您可以
用“ config.py”模块写您的变量。然后import config as cfg
并使用cfg.
限定名称进行操作。您也可以from config import *
直接使用,但是不建议这样做,并且您会失去原始配置模块中的写入功能。它们被复制到当前名称空间中,而不是链接的。
像Walter所说的那样,仅使用字典来保存您的设置。它们是明显的内置类型。
cfg
并通过cfg.
限定符操作属性。.ini
的configparser等)。可能还有更多选择,但我认为该列表足以满足大多数口味。
现在第一个问题是,我认为这是一个很好的问题,我几乎可以肯定答案是否定的,您无法在Python中做到这一点。从here中,我发现this是self
使用义务的原因。安全性,明确性和性能。我想如果允许,您也可以将其用于self
,也许这就是为什么您不能使用它。
我有时也会错过该功能。