所以我在这里寻找的是像PHP的print_r函数.这样我就可以通过查看相关对象的状态来调试我的脚本.
python debugging introspection pretty-print python-datamodel
有没有办法获得所有属性/方法/字段/等.Python中的对象?
vars()是接近我想要的,但它不起作用,除非一个对象有一个__dict__,这并不总是正确的(例如,它不适用于a list,a dict等).
我想迭代一个类中的方法,或者根据存在的方法以不同的方式处理类或实例对象.如何获取类方法列表?
另见:
假设o是一个Python对象,我想要所有的字段o,没有任何方法或__stuff__.如何才能做到这一点?
我尝试过这样的事情:
[f for f in dir(o) if not callable(f)]
[f for f in dir(o) if not inspect.ismethod(f)]
Run Code Online (Sandbox Code Playgroud)
但这些返回相同dir(o),大概是因为dir给出了一个字符串列表.此外,__class__即使我让这个工作,这里也会返回.
假设我已经创建了一个编译的re:
x = re.compile('^\d+$')
Run Code Online (Sandbox Code Playgroud)
有没有办法从x中提取模式字符串(^\d + $)?
给定一个简单的类,有没有办法为其输出所有可能的属性?标准属性,如__class__and__doc__ 和 特殊的只读属性,如__mro__, __bases__et al。一般来说,所有存在的属性?
考虑一个类的最简单的情况:
class myClass:
pass
Run Code Online (Sandbox Code Playgroud)
的dir(),vars()和inspect.getmembers()所有的排除某些builtin属性。通过使用myClass.__dir__(MyClass)which提供最完整的列表,在添加内置属性时,排除 的用户定义属性MyClass,例如:
In [3]: set(MyClass.__dir__(MyClass)) - set(dir(MyClass))
Out[3]:
{'__abstractmethods__', '__base__', '__bases__',
'__basicsize__', '__call__', '__dictoffset__',
'__flags__', '__instancecheck__', '__itemsize__',
'__mro__', '__name__', '__prepare__', '__qualname__',
'__subclasscheck__', '__subclasses__', '__text_signature__',
'__weakrefoffset__', 'mro'}
Run Code Online (Sandbox Code Playgroud)
根据添加的类似问题之一,这是不可能的。如果目前仍然不可能,那么“隐藏”某些属性__bases__(从标准调用到dir(), vars() & inspect而不是像__name__?
这是最有可能被标记为重复的,但是,它是旧的并且主要与
Python 2.x. 公认的答案是没有办法,但它是在 08' 中提供的。12' 中的最新答案建议 …
我正在使用python-requests和 lambda 函数(如果你称它为别的东西,请纠正我)来获取 url。鉴于 url 根据 的值而变化epoch(),我想打印它以进行调试。
对我来说很幸运print(kiwi.url),因为kiwi.url存在,但为了将来的参考,我如何在不依赖运气的情况下找到 python 请求甚至其他模块的所有可能属性?
import time, requests
epoch = lambda: int(time.time()*1000)
kiwi = s.get('http://www.example.com/api?do=%i' % epoch())
print(kiwi.url) #I found the .url attribute by chance.
^
Run Code Online (Sandbox Code Playgroud) 您如何知道 Python 对象中的属性与方法?使用 dir 方法时,它只列出所有内容,例如 dir('string')。
我正在尝试导入并使用此处找到的名为"wikipedia"的模块...
https://github.com/goldsmith/Wikipedia
我可以使用dir函数检查所有属性.
>>> dir(wikipedia)
['BeautifulSoup', 'DisambiguationError', 'PageError', 'RedirectError', 'WikipediaPage', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'cache', 'donate', 'exceptions', 'page', 'random', 'requests', 'search', 'suggest', 'summary', 'util', 'wikipedia']
Run Code Online (Sandbox Code Playgroud)
但是wikipedia.page不会返回它的所有子属性(!?)
>>> dir(wikipedia.page)
['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
Run Code Online (Sandbox Code Playgroud)
我希望在这个列表中看到标题,内容等属性.我如何知道"页面"中隐藏的属性是什么?
python ×10
attributes ×2
python-3.x ×2
debugging ×1
pretty-print ×1
python-2.6 ×1
python-2.7 ×1
python-2.x ×1
regex ×1