【发布时间】:2017-01-04 20:58:58
【问题描述】:
我有以下课程:
class External(object):
def __init__(self, first, second):
self.first = first
self.second = second
def foo():
print('something')
class Parent(object):
shirt_color = ''
shoes_color = ''
external_class = External(shirt_color, shoes_color)
class SouthParent(Parent):
shirt_color = 'white'
shoes_color = 'blue'
因为 SouthParent 是 Parent 的子级,并且类变量 shirt_color 和 shoes_color 在 SouthParent 类中重新定义,所以 External() 将接收的预期参数应该是 ('white', 'blue') 但它接收的是 ( '','')
这是这样定义的,用于像 SouthParent.external_class.foo() 这样的终端像 Django 模型( User.objects.all() )
【问题讨论】:
-
在实际调用
External的时候,shirt_color和shoes_color根本就不是类变量;它们只是class语句主体中的局部变量,一旦元类实际创建Parent,它们将被添加到类的字典中。
标签: python class inheritance