【发布时间】:2018-10-01 18:29:58
【问题描述】:
在python中多重继承的情况下,有没有办法识别一个类级变量是从哪个超类获取的?
我试图用谷歌搜索的所有尝试绝大多数都是关于如何获取属性而不是找出它来自哪里:
https://www.google.com/search?q=pythin+which+super+class+defines+attr
https://www.google.com/search?q=python+which+super+class+attribute+obtained+from
我想我可以使用 inspect.getmro(cls) 手动单步执行 MRO。但我找不到任何更优雅的解决方案。只是想知道是否有人知道。
编辑
举个具体的例子:
class Super1(object):
__class_attribute__ = "Foo"
class Super2(object):
pass
class Derived(Super1, Super2):
pass
d = Derived()
parent_cls = some_function_to_get_defining_class(d.__class_attribute__) # <-- should return `Super1`
【问题讨论】:
-
我的错误,@ipetrik,我以为你在看的是方法,而不是类级别的变量。
-
NP,@詹姆斯。抱歉没有区分。
标签: python