摘要:
>>> dict({1:2},2=3)SyntaxError: keyword can't be an expression>>> dict({1:2},**{2:3})Traceback (most recent call last): File "", line 1, in dict({1:2},**{2:3})TypeError: keyword arguments must be strings>>> dict({1:2},**{'2':3}){1: 2, '2': 3}& 阅读全文
摘要:
最近读django源码,发现必须了解元类才能理解一些很神奇的行为.发现元类实际上是控制class的创建过程.比如类B继承某个看似平淡无奇的类A之后,你在类B中定义的属性或方法可能会遭到彻底改变.假设我们想实现这么一种需求:创建一个类Child,在这个类中定义的种种字符串属性,都可以当做对应的函数那样调用.例如:class Child(): f1='print'随后,Child.f1就完全和内建函数print等价了.Child.f1('abc')能够打印出abc这个字符串.这样来说,元类的用途看起来可以是:一些高手设计了一个在幕后做了很多工作的元类,另一些开发人员 阅读全文