【发布时间】:2018-02-26 02:15:59
【问题描述】:
我是python的初学者。我正在学习元类,但我不太了解字典如何存储方法和属性?
class ModelMetaclass(type):
def __new__(cls, name, bases, attrs):
if name=='Model':
return type.__new__(cls, name, bases, attrs)
print('Found model: %s' % name)
mappings = dict()
for k, v in attrs.items():
if isinstance(v, Field):
print('Found mapping: %s ==> %s' % (k, v))
mappings[k] = v
for k in mappings.keys():
attrs.pop(k)
attrs['__mappings__'] = mappings
attrs['__table__'] = name
return type.__new__(cls, name, bases, attrs)
我假设 attrs 不仅可以存储变量,还可以存储方法。如果这样做,这本字典中的键和值是什么,attrs?
【问题讨论】:
-
方法只是可调用的属性。对象属性通常存储在字典中,名为
__dict__(也是一个属性,通过称为“槽”的机制)。 -
如果您是初学者,可以暂时忽略元类。
-
顺便说一下,将“attributes”缩写为“attrs”会造成混淆,因为有一个流行的 Python 库,名为
attrs
标签: python dictionary orm metaclass