クラスのデータ記述子のリストを取得する方法がわからないようです。基本的に、フィールドと未設定のフィールドに対していくつかの検証を実行したいと思います。例えば:
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)
しかし、私は継承の問題に遭遇しました、何かアイデアはありますか?