gpt4 book ai didi

python - 如何确定属性是位于原始类还是继承类?

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:19 24 4
gpt4 key购买 nike

在下面的代码中:

class Klass_1:
a = 1

class Klass_2(Klass_1):
b = 2

k = Klass_2()

可以同时访问 k.ak.b , 和 hasattr(k, ...)True对于“a”和“b”。

如何确定属性是否位于原始类中 Klass_2或继承类 Klass_1

最佳答案

您必须检查 MRO 中每个类的 __dict__ 对象(您可以在此处使用 vars() 函数使代码更清晰):

def class_for_attribute(instance, attribute_name):
for cls in type(instance).mro():
if attribute_name in vars(cls):
return cls

演示:

>>> class_for_attribute(k, 'a')
<class '__main__.Klass_1'>
>>> class_for_attribute(k, 'b')
<class '__main__.Klass_2'>

关于python - 如何确定属性是位于原始类还是继承类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42503677/

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