1. 属性装饰器:
property
@property def errors(self): """ Returns a list of form.errors for every form in self.forms. """ if self._errors is None: self.full_clean() return self._errors
cached_property
@cached_property def forms(self): """ Instantiate forms at first property access. """ # DoS protection is included in total_form_count() forms = [self._construct_form(i) for i in xrange(self.total_form_count())] return forms
2. 对象的父类名称
对象所属的类: object.__class__
cls.__bases__ (因为父类可能不止一个,所以复数)
因此对象的父类名称为集合: [x.__name__ for x in object.__class__.bases__]