我想创建一个简单的一次性 Python 对象来保存一些命令行选项。我想做这样的事情:
options = ??????
options.VERBOSE = True
options.IGNORE_WARNINGS = False
# Then, elsewhere in the code...
if options.VERBOSE:
...
当然我可以使用字典,但是 options.VERBOSE
比 options['VERBOSE']
更具可读性和更易于键入。
我认为我应该能够做到
options = object()
,因为 object
是所有类对象的基类型,因此应该类似于没有属性的类。但它不起作用,因为使用 object()
创建的对象没有 __dict__
成员,因此无法向其添加属性:
options.VERBOSE = True
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'VERBOSE'
创建可以这种方式使用的对象的最简单的“pythonic”方法是什么,最好不需要创建额外的帮助程序类?
最佳答案
collections module在 2.6 中增加了一个 namedtuple 函数:
import collections
opt=collections.namedtuple('options','VERBOSE IGNORE_WARNINGS')
myoptions=opt(True, False)
>>> myoptions
options(VERBOSE=True, IGNORE_WARNINGS=False)
>>> myoptions.VERBOSE
True
namedtuple 是不可变的,因此您只能在创建它时分配字段值。
在早期的 Python 版本中,您可以创建一个空类:
class options(object):
pass
myoptions=options()
myoptions.VERBOSE=True
myoptions.IGNORE_WARNINGS=False
>>> myoptions.IGNORE_WARNINGS,myoptions.VERBOSE
(False, True)
关于python - 创建简单的一次性 Python 对象的简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/211695/