gpt4 book ai didi

python - 检查类对象

转载 作者:太空狗 更新时间:2023-10-30 01:51:31 24 4
gpt4 key购买 nike

在 python 中是否可以检查一个对象是否是一个类对象。 IE 如果你有

class Foo(object):
pass

如何检查 o 是 Foo(或其他类)还是 Foo 的实例(或任何其他类实例)?在 Java 中,这将是一件简单的事情。只需检查对象是否是 Class 的实例。 python 中是否有类似的东西,或者你应该不在乎?

稍微澄清一下:我正在尝试创建一个函数来打印有关其给定参数的信息。所以如果你传入 o,其中 o = Foo() 它会打印出关于 Foo 的信息。如果您传入 Foo,它应该打印出完全相同的信息。不是关于类型的信息。

最佳答案

使用 isinstance 内置函数。

>>> o = Foo()
>>> isinstance(o, Foo)
True
>>> isinstance(13, Foo)
False

这也适用于子类:

>>> class Bar(Foo): pass

>>> b = Bar()
>>> isinstance(b, Foo)
True
>>> isinstance(b, Bar)
True

是的,通常情况下,您不应该特别关心对象的类型。相反,您只需在 o 上调用您想要的方法,这样人们就可以插入符合您的界面的任意对象。如果您要主动检查正在使用的对象类型,这是不可能的。这个原理叫做duck typing ,并允许您在选择编写代码的方式上有更多的自由。

Python 是实用的,所以如果它对您的特定程序有意义,请随意使用 isinstance

编辑:

要检查某个变量是类还是实例,您可以这样做:

>>> isinstance(Foo, type)   # returns true if the variable is a type.
True
>>> isinstance(o, type)
False

关于python - 检查类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18499614/

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