近日在学习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
Nampaknya ini adalah kelas asas model pangkalan data, yang mewarisi daripada dict, jadi ia boleh dikatakan sebagai kamus Selain itu, anda boleh melihat __mappings__ dalam ModelMetaclass, yang merupakan pemetaan nama atribut kepada. lajur. Jadi getValueOrDefault mudah difahami Ia adalah untuk mendapatkan nilai atribut tertentu Jika atribut objek belum diberikan nilai, dapatkan nilai lalai lajur yang sepadan. Contohnya, Model berikut mewakili pengguna:
Nota: Kod di atas adalah serupa dengan kod pseudo dan tidak boleh dijalankan secara langsung. Ia hanya digunakan untuk penjelasan tambahan.
Jika dua kaedah sihir pertama tidak ditakrifkan, dua kaedah kelas seterusnya tidak akan berfungsi