gpt4 book ai didi

python - 如何询问 python 对象的结构?

转载 作者:行者123 更新时间:2023-11-30 21:58:58 25 4
gpt4 key购买 nike

有没有一种方法可以以编程方式确定对象的结构/模型、它的组成部分,以及如何迭代、操作、转换、分解和构建备份?

尝试和错误是伟大的老师。我每天都上他们的课。但在这里,我正在寻找一种“更聪明地工作”或至少以不同的方式工作的方法。

一点背景知识:我最近花了太多时间错误地处理 pandas groupby 对象,因为我不理解它的构建 block 部分和类型。我没有正确处理在 groupby 对象上迭代时返回的元组。我现在对这个特定对象有了更好的了解,但还不够充分:例如,一个 groupby 对象分解为“params”和“table” ”迭代时。 table 又由 indexrows 组成。但我仍然不确定如何处理行:它们由什么组成或分解成什么。 This post包含重现问题的代码:请参阅原始帖子底部的编辑 2。

但这是一个特殊情况;我的问题比较笼统。我的问题是,如果我还不知道 python 对象/类型的结构或“模型”,我如何查询该对象以以文本方式显示此信息,或者更好的是以图形方式显示此信息?

<小时/>

编辑:

出于探索和学习的目的,下面我尝试通过 for 循环在 str 对象上运行每个 str 方法。 meth obj 在循环的前两行中被正确解释(例如,__add____class__),但被解释为 当我尝试运行 obj.meth 时。我该如何解决这个问题?

输入:

obj = 'my_string'

object_methods = [method_name for method_name in dir(obj)
if callable(getattr(obj, method_name))]

print(len(object_methods))
print(object_methods)

输出:

77
['__add__', '__class__', . . ., 'upper', 'zfill']

输入:

for meth in object_methods:
print(meth)
try:
print('obj.meth for obj', obj, 'and method', meth, ':')
obj.meth
except AttributeError as e:
print('obj.meth for obj', obj, 'and method', meth, ': AttributeError:', e)

输出:

__add__
obj.meth for obj my_string and method __add__ :
obj.meth for obj my_string and method __add__ : AttributeError: 'str' object has no attribute 'meth'
__class__
obj.meth for obj my_string and method __class__ :
obj.meth for obj my_string and method __class__ : AttributeError: 'str' object has no attribute 'meth'
. . .

最佳答案

您可以使用__dict___ dir 以便查看对象模型。

class Person:
def __init__(self, name, age):
self.name = name
self.age = age

jack = Person('jack',23)
print(jack.__dict__)
print(dir(jack))

输出:

{'age': 23, 'name': 'jack'}
['__doc__', '__init__', '__module__', 'age', 'name']

关于python - 如何询问 python 对象的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54733179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com