Nếu tôi muốn sử dụng các kết quả của argparse.ArgumentParser(), đó là một Namespaceđối tượng, với một phương thức mong đợi một từ điển hoặc đối tượng giống như ánh xạ (xem bộ sưu tập . Đánh dấu), cách đúng đắn để làm điều đó là gì?
C:\>python
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import argparse
>>> args = argparse.Namespace()
>>> args.foo = 1
>>> args.bar = [1,2,3]
>>> args.baz = 'yippee'
>>> args['baz']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'Namespace' object has no attribute '__getitem__'
>>> dir(args)
['__class__', '__contains__', '__delattr__', '__dict__', '__doc__', '__eq__', '_
_format__', '__getattribute__', '__hash__', '__init__', '__module__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__
', '__str__', '__subclasshook__', '__weakref__', '_get_args', '_get_kwargs', 'ba
r', 'baz', 'foo']
Có đúng không khi "tiếp cận" một đối tượng và sử dụng __dict__tài sản của nó ?
Tôi nghĩ rằng câu trả lời là không có: __dict__có mùi giống như một quy ước để thực hiện, nhưng không phải cho một giao diện, cách __getattribute__hay __setattr__hoặc __contains__có vẻ được.
vars()(đó làlocals()hoặcglobals()), nhưng tôi không thực sự chắc chắn.