gpt4 book ai didi

python - 没有父类(super class)属性的类属性

转载 作者:行者123 更新时间:2023-12-01 05:11:28 24 4
gpt4 key购买 nike

我有一个继承层次结构,其中一些类具有名为“pickled”的类属性。我想获得 A.pickled 如果它存在,或者 None 如果不存在 - 即使 A 派生自许多类,包括例如 B 和 B.pickled 存在(或不存在) .

现在我的解决方案抓取 A__mro__。如果可能的话,我想要一个更干净的解决方案。

最佳答案

要绕过通过__mro__进行的正常搜索,请直接查看类的属性字典。您可以使用 vars() function为此:

return vars(cls).get('pickled', None)

您也可以直接访问 __dict__ 属性:

return cls.__dict__.get('pickled', None)

但使用内置函数优于直接访问双下划线属性字典。

object.__getattribute__ 是用于查看类属性的错误方法;请参阅What is the difference between type.__getattribute__ and object.__getattribute__?

type.__getattribute__ 用于类上的属性访问,但仍然会搜索 MRO。

关于python - 没有父类(super class)属性的类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24150636/

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