假设我们有一堂课:
class Base:
a = 1
def subclass_fields(self):
return ... # здесь должно вернуться что-то типа {"b": 2}
还有一个继承自Base的类:
class MyClass(Base):
b = 2
我希望该方法subclass_fields返回那些不在类中Base但在任何子类中声明的字段和方法 - 例如,在声明新类时MyClass2:
class MyClass2(MyClass):
c = 3
c = MyClass2()
print(c.subclass_fields) # {"b": 2, "c": 3}
我可以这样建议:
结论:
UPD:但是,我不太喜欢这个函数的名称。它说我们得到了后代类的字段,而实际上它返回的字段不在主基类中。
研究了 django orm 的来源后,我找到了一种获取后代字段的方法:
元类:
所有其他类都将从其继承的基类:
现在我们创建类,继承自 Base:
获取继承人的字段列表: