gpt4 book ai didi

python - 如何在 python3 中检索类类型的子类?

转载 作者:太空宇宙 更新时间:2023-11-04 02:44:20 25 4
gpt4 key购买 nike

在python3中,object是所有类的基础。

>>> object
<class 'object'>
>>> object.mro()
[<class 'object'>]
# it makes sense.

但是:

>>> object.__class__
<class 'type'>
>>> object.__subclasses__()
[<class 'type'>, ....]

class 'type' 是对象的父类(super class)和子类。

defination of __class__ in official documentation python 3.6.2

  • instance.``__class__

    The class to which a class instance belongs.

尝试“输入”

>>> type
<class 'type'>
>>> type.__class__
<class 'type'>
>>> type.__subclasses__
<method '__subclasses__' of 'type' objects>

然后发生错误:

>>> type.__subclasses__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: descriptor '__subclasses__' of 'type' object needs an argument

如何获取类类型的子类?

最佳答案

__subclasses__ 的文档不足大约。然而,它似乎是从 type 调用那个 dunder需要“类型”对象的实例:

>>> type.__subclasses__(type) # 'type' is an instance of itself
[<class 'abc.ABCMeta'>, <class 'enum.EnumMeta'>, <class '__main__.a'>]

事实上,type.__subclasses__(obj)可以用来代替直接从 obj 调用方法因为每个对象都是 type 的实例:

>>> int.__subclasses__()
[<class 'bool'>, <enum 'IntEnum'>, ...]
>>> type.__subclasses__(int)
[<class 'bool'>, <enum 'IntEnum'>, ...]

并且行为与对象 object 一致,所以:

type.__subclasses__(object) == object.__subclasses__()

关于python - 如何在 python3 中检索类类型的子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45581154/

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