2024-10-04 05:32:10 发布
网友
如何枚举用@property标记的Python类的函数?在
@property
class MyClass: @property def my_property(): pass
类似于此,但是inspect.isproperty没有lambda筛选器:
inspect.isproperty
显然,这些被称为托管属性。在
这样可以做到:
inspect.getmembers(obj.__class__, lambda x: isinstance(x, property))
下面是它的具体工作方式(使用IPython):
In [29]: class Foo(object): ....: @property ....: def foo(self): return 42 ....: In [30]: obj = Foo() In [31]: inspect.getmembers(obj.__class__, lambda prop: isinstance(prop, property)) Out[31]: [('foo', <property at 0x106aec6d8>)]
这是因为property实际上是一个普通的(新样式)类;通过用@property标记某个东西,就可以生成property的实例。这也意味着可以使用isinstance将属性实例(在类上)与property进行类型比较。在
property
isinstance
这样可以做到:
inspect.getmembers(obj.__class__, lambda x: isinstance(x, property))
下面是它的具体工作方式(使用IPython):
这是因为
property
实际上是一个普通的(新样式)类;通过用@property
标记某个东西,就可以生成property
的实例。这也意味着可以使用isinstance
将属性实例(在类上)与property
进行类型比较。在相关问题 更多 >
编程相关推荐