由ORM谈Python元类

<节> <节> <节>


 <代码类=癶ljs语言java”>:模块}
,,attached_to不是没有:
,,,,,,]=__reduce__,,,,,class_dict []=

 <代码类=癶ljs语言java ">在祝辞祝辞类MyClass (): 
…,,通过…
在祝辞祝辞打印MyClass __main__.MyClass
在祝辞祝辞a=MyClass
在祝辞祝辞打印一个__main__.MyClass
在祝辞祝辞MyClass.__dict__
{& # 39; __module__& # 39;: & # 39; __main__ # 39;, & # 39; __doc__& # 39;:没有}
在祝辞祝辞MyClass。一个=100
在祝辞比;MyClass.__dict__
{& # 39;一个# 39;:100 & # 39;__module__& # 39;: & # 39; __main__ # 39;, & # 39; __doc__& # 39;:没有}
在祝辞祝辞在在在MyClass。一个=200
在祝辞比;MyClass.a200
在祝辞祝辞
<节> <节> <节> <节> <>强如何动态的创建类? <节>

 <代码类=癶ljs语言java”> def create_class (class_name):,,,如果class_name==癕yClass": 
,,,,类MyClass ():,,,,,,通过,,,,返回MyClass
,其他:
,,,,类OtherClasss ():,,,,,,,通过,,,代码,返回OtherClasss

 <代码类=癶ljs语言java ">在祝辞祝辞)& lt;类型& # 39;& # 39;
在在在在打印)& lt;类型& # 39;str # 39;
在在在在类

 <代码类=癶ljs语言java”> MyClass=类型(、(){})
MyObject=MyClass()
<节> <节> <节> <节> <强>类的_metaclass_属性

 class  Foo(对象):,,,,,__metaclass__ =,东西…,[…]

 <代码类=癶ljs语言java”>名称、瓦尔在class_attr.items (): 
,,,,name.startswith ():,,,,,,lower_attr[名字]=val
,,,,:,,,,,lower_attr [name.lower ()]=,, b=my_class=MyClss()
) # False print ) # True print ) # True
如何自己实现ORM?

class Field(object):     def __init__(self, name, column_type):         self.name = name         self.column_type = column_type

class StringField(Field):     def __init__(self, name, max_length):         super(StringField, self).__init__(name, 'varchar(%d)' % max_length)  class IntegerField(Field):     def __init__(self, name):         super(IntegerField, self).__init__(name, 'int')

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):                 mappings[k] = v         for k in mappings.keys():             attrs.pop(k)         attrs['__mappings__'] = mappings         attrs['__table__'] = name         return type.__new__(cls, name, bases, attrs)

 (,=ModelMetaclass):

  ,:
,,,,,,自我(例子),,,,,除了KeyError:,,,,,,提高%键),在self.__mappings__.items, def k、v ():,,,null

由ORM谈Python元类