3
我似乎无法弄清楚如何获取类数据描述符的列表。基本上,我想对字段和未设置的字段进行一些验证。例如:python类数据描述符列表
class Field (object):
def __init__ (self, name, required=False):
self.name = name
self.required = required
def __set__ (self, obj, val):
obj.__dict__[self.name] = val
def __get__ (self, obj):
if obj == None:
raise AttributeError
if self.name not in obj.__dict__:
raise AttributeError
return obj.__dict__[self.name]
然后我想实现它的模型,像这样:
class BaseModel (object):
some_attr = Field('some_attr', required=True)
def save (self):
for field in fields:
if field.required and field.name not in self.__dict__:
raise Exeception, 'Validation Error'
我怎么会去让我定义的字段列表?我在想,我可以做到以下几点:
import inspect
fields = []
for attr in self.__class__.__dict__:
if inspect.isdatadescriptor(self.__class__.__dict__[attr]):
fields.append(attr)
但我遇到了继承问题,有什么想法?
我只是想知道,是否有可能使它只执行一次,因为字段不会改变我不想在每个对象实例上做它。 –
我不确定我是否理解你的意思。这是一个验证类的问题,以便它只包含字段属性?然后,只有在创建课程时才进行一次验证,而不是每次调用“保存”时都进行验证? –
如果是这样的话,那么我会考虑在元类或者类装饰器中包装这种验证。 –