建网站要花费多少钱,wordpress装插件吗,无锡做网站设计的企业,wordpress+3.4.2[TOC]装饰器python中的装饰器(decorator)是在pep 318中被首次引入#xff0c;它的本质是一个函数这个函数是接受其它参数为参数#xff0c;并且用一个新的#xff0c;修改后的函数作为替换#xff0c;最常见的装饰器就classmethod和staticmethoddef happy(f):return lambda…[TOC]装饰器python中的装饰器(decorator)是在pep 318中被首次引入它的本质是一个函数这个函数是接受其它参数为参数并且用一个新的修改后的函数作为替换最常见的装饰器就classmethod和staticmethoddef happy(f):return lambda x:2*xhappydef haha(x):print you cant see mereturn 12*xprint haha(1)方法方法是作为类属性的函数如果直接调用类方法py2里会提示是一个未绑定的方法py3里会提示这是一个函数class happy():name happydef hh(self,ddd):return dddprint happy.hh(aaa)python3里可以传入一个实例化的class进去调用未绑定的方法class happy():name happydef hh(self,ddd):return dddprint(happy.hh(happy(),aaa))静态方法 staticmethod除了python3里传未绑定的类给类方法之外还有个办法可以调用未绑定的类方法就是静态方法class happy():name happystaticmethoddef hh():return 111print happy.hh()静态方法就是定义类方法时候加一个staticclass的decorator它有几个好处调用方法前不必实例化方法减少开销提高代码可读性可以在子类中覆盖静态方法类方法 classmethodclassmethod是直接绑定到类的方法类方法最有用的是创建工厂方法也就是以特定方式实例化对象类方法定义时候总是要绑定到它附着的类上而且它的第一个参数必须是类本身比如class happy():name happyclassmethoddef hh(cls):return 111print happy.hh()抽象方法 abstactclass和abc抽象方法是在基类里定义的但是需要子类继续完善的方法好多语言里抽象方法只能定义不能实现py里抽象方法是可以实现一些通用功能并且通过super在子类里被调用如果不用abc类被继承但是抽象方法没重新实现的时候抽象方法不被调用就不会报错解决方案就是用abc示例如下import abcclass happy():__metaclass__ abc.ABCMetaname happystaticmethodabc.abstractmethoddef hh(ddd):return ddd.name staticprint happy.hh(aaa)混合使用三种方法静态方法或者类方法可以和抽象方法混用如果混用了抽象方法在子类里无须实例化即可调用示例如下import abcclass happy():__metaclass__ abc.ABCMetaname happystaticmethodabc.abstractmethoddef hh(ddd):return ddd staticclass haha(happy):def aa(self):return super(haha,self).nameprint haha().hh(dd)superpython比较牛逼的地方是支持mixin和多重继承可以很方便的通过super函数调用一个类的父类那么问题来了如果一个方法再多个父类里都有那么调用那个父类呢这就涉及一个mro的算法mro变换过多次最近的一次是py2.3里实现的c3算法C3算法解决了单调性问题和只能继承无法重写问题python里的super算法总体可以归结成一句话自上到下自左到右把左边的类从上到下遍历过了才会遍历就像下面的图遍历顺序是a b d c e fc3算法更具体解释可以参见官网class D(object):passclass E(object):passclass F(object):passclass C(E, F):passclass B(D,E):passclass A(B, C):passif __name__ __main__:print A.__mro__6---Level 3 | O | (more general)/ --- \/ | \ |/ | \ |/ | \ |--- --- --- |Level 2 3 | D | 4| E | | F | 5 |--- --- --- |\ \ _ / | |\ / \ _ | |\ / \ | |--- --- |Level 1 1 | B | | C | 2 |--- --- |\ / |\ / \ /---Level 0 0 | A | (more specialized)---