近日在学习python,看的的廖大的python教程,这里有段代码看不懂
主要是getValueOrDefault()
函数 谁给剖析一下?
class Model(dict, metaclass=ModelMetaclass):
def __init__(self, **kw):
super(Model, self).__init__(**kw)
def __getattr__(self, key):
try:
return self[key]
except KeyError:
raise AttributeError(r"'Model' object has no attribute '%s'" % key)
def __setattr__(self, key, value):
self[key] = value
def getValue(self, key):
return getattr(self, key, None)
def getValueOrDefault(self, key):
value = getattr(self, key, None)
if value is None:
field = self.__mappings__[key]
if field.default is not None:
value = field.default() if callable(field.default) else field.default
logging.debug('using default value for %s: %s' % (key, str(value)))
setattr(self, key, value)
return value
これは dict を継承したデータベース モデルの基本クラスであるため、辞書であると言えます。また、属性名のマッピングである ModelMetaclass の __mappings__ を参照することもできます。列。したがって、getValueOrDefault は、オブジェクトの属性に値が割り当てられていない場合に、その属性の値を取得することを意味します。たとえば、次のモデルはユーザーを表します:
リーリー注: 上記のコードは疑似コードに似ており、補助的な説明にのみ使用されますので、直接実行することはできません。
リーリー
最初の 2 つのマジック メソッドが定義されていない場合、次の 2 つのクラス メソッドは機能しません