我知道我们可以轻松地显示特定类中所有字段的列表,例如EmployerProfile
,
[f.name for f in EmployerProfile._meta.get_fields()]
假设我们有另一个班级,例如FinancialProfile
,这两个班级都不是彼此派生的。我想从这个特定的类访问其他类的字段。我的意思是我想从EmployerProfile
内部FinancialProfile
创建一个字段列表。我怎么能这样做? super()
方法是一种很好的方法吗?
提前致谢!
答案 0 :(得分:0)
类是Python中的对象,因此您可以在运行时创建或修改它们。你需要的是什么叫" Metaclasses",这里有一些例子: http://eli.thegreenplace.net/2011/08/14/python-metaclasses-by-example
如果您的课程没有相互继承 - 则无法使用super()
。
以下是创建c类B的示例,其中包含A类成员的完整副本:
#!/usr/bin/python
class A():
a = 5
b = 'b'
c = "test value"
a = A()
print "Class A members:"
print a.a
print a.b
print a.c
# Please note that class B does not explicitly declare class A members
# it is empty by default, we copy all class A methods in __init__ constructor
class B():
def __init__(self):
# Iterate class A attributes
for member_of_A in A.__dict__.keys():
# Skip private and protected members
if not member_of_A.startswith("_"):
# Assign class A member to class B
setattr(B, member_of_A, A.__dict__[member_of_A])
b = B()
print "Class B members:"
print b.a
print b.b
print b.c
这是Python类的示例,而不是Django模型。对于Django模型类,解决方案可能不同。