免责声明:我在python中迈出了第一步,这就是为什么这个问题可能听起来有些愚蠢。
如何列出self
中存储的所有变量?
答案 0 :(得分:5)
您可能需要inspect.getmembers
,因为它会列出对象的成员,即使这些对象已定义__slots__
,因为这些对象没有__dict__
。
>>> import inspect
>>> class F:
... def __init__(self):
... self.x = 2
...
>>> inspect.getmembers(F())
[('__doc__', None), ('__init__', <bound method F.__init__ of <__main__.F instance at 0xb7527fec>>), ('__module__', '__main__'), ('x', 2)]
>>> class F:
... __slots__ = ('x')
... def __init__(self):
... self.x = 2
...
>>> inspect.getmembers(F())
[('__doc__', None), ('__init__', <bound method F.__init__ of <__main__.F instance at 0xb72d3b0c>>), ('__module__', '__main__'), ('__slots__', 'x'), ('x', 2)]
答案 1 :(得分:2)
每个python对象都有一个名为__dict__
的特殊成员,它是一个包含所有实例成员的字典。
self.__dict__.keys()
列出了他们的名字
self.__dict__['foo']
可让您访问成员foo
self.foo = 1
之类的东西(在基本层面上)与写self.__dict__['foo'] = 1
同样有效。
答案 2 :(得分:2)
如果你是初学者,你会问一个简单的问题,所以这里有一个简单的答案:你可以看到一个类或对象的所有内容,不仅仅是变量,还有方法和其他内容,使用命令dir
。当你在python提示符处闲逛时,这很棒。试试
dir("hello") # examine string object
dir(str) # examine string class
import os
dir(os) # Examine module
是的,从类中可以使用它来检查self
,因为self
只是一个类对象。您可以对类的内容使用dir
,type
和help
来获取有关它们的更多详细信息:
dir(os.stdout)