您的位置:首页 > 编程语言 > Python开发

python 模块,类和全局函数---命名空间;继承和装饰器总结

2017-10-31 18:54 525 查看
def plfir():

    print("this is first")

class examp():

    def __init__(self,x=4,y=1):

        self.x=x

        self.y=y

    def lk(self):

        self.display()       #调用本类中的方法,不要写成:display()不带self.   或:self.display(self) 参数列表不要带self

        plfir()                   #全局函数可直接调用,不要写成:self.plfir()   或:self.plfir(self)        plfir(self)

        plsec()                      # 全局方法和类方法  类中调用时形式                           全局函数      类内函数

    def display(self):          #                                                                                                

        z=self.x+self.y         #                                                                     函数        ___*_____ |___self.函数名______

        print(z)                                                                                    参数列表             *            |          *

ep=examp()

def plsec():

    print("this is second")   #只要在实例化例子  调用函数前定义函数,都不会报错

    

ep.lk()

在模块中,在哪个模块中定义函数,全局命名空间就是哪个模块,而不是调用他那个模块的全局命名空间。



子类继承父类,初始化变量  __init__()构造函数必须初始化父__init__()中包含的变量,或子类省略__init__()函数让子类,自动

初始化继承父类中的变量,如:

class
pdg(dig): 


      def __init__(self,x,y,j):

            dig.__init__(self,x,y)   #父类中变量需初始化,子类中没有__init__函数,子类也会自动继承父类中的变量(属性)




子类不能继承父类私有属性和私有方法(属性名和方法名前缀有两个下划线的)





类装饰器,被装饰的类的方法包   含于  类装饰器的方法中否则会报错,如:

def abc(myclass):

    class InnerClass:

        def __init__(self,z=0):

            self.z = 0

            self.wrapper = myclass()

        def position(self):

            self.wrapper.position()

            print('z axis:',self.z)

 

    return InnerClass

@abc

class coordination:

    def __init__(self,x=0,y=0):

        self.x = x

        self.y =y

    def position(self):

        print('x axis:',self.x)

        print('y axis:',self.y)

       

if __name__ == '__main__':

    coor = coordination()

    coor.position()

函数装饰器:

def func(fun):

    def new_fun(*args,**kwargs):

        print "the celsius is:"

        fun(*args,**kwargs)

    return new_fun

@func

def fahrenheit2celsius(fahrenheit):

    celsius = (5.0/9)*(fahrenheit)

    print celsius

    return celsius

if __name__ == '__main__':

    fahrenheit2celsius(23)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: