• Python学习第四章


    1.类和对象:

    类对象支持两种操作:属性引用和实例化。

    属性引用:obj.name

    构造方法:类会定义一个名为__int__()的特殊方法如下

    def  __init__(self):

          self.data=[]

    类定义了__init__()方法的话,类的实例化操作会自动调用__init__()的方法。如下所示:

    X=Class()

    当然,__init__()方法可以有参数,参数通过__init__()传递到类的实例化操作上。如下所示:

    class All:

        def __init__(self,realpart,imagpart):

                self.r=realpart

                self.i=imagpart

    X=All(2,3.2)

    print(X.r,X.i)

    这样我们就把值传递到了X上,输出的结果为:2 3.2

    看到这里,我们也许会对self产生疑问,下面我们就对self 进行解释:

    self代表类的实例,奥不是类,代表的是当前对象的地址,self.class则指向类

    这里要注意的是self并不是python的关键字,我们把它化成we也是可以的,只不过我们

    规定用self。

    2.类的方法

    在类的内部,使用def关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数,self代表的是

    类的实例。

    class man:

        name=''

        age=''

        __weigth=0(__. 属性为私用的属性,在内部类无法进行直接访问)

        def __init__(self,n,a,w):

                 self.name=n

                 self.age=a

                 self.__weigth=w

          def speak(self):

                 print("%ssay:I am%do ld。"%(self.name,self.age))

    下面我们来实例化:

    p=man('xiaodong',20,170)

    p.speak()

    以上代码的输出为:

    xiaodong say:i am 20 old

    如果我们想要输出__weight,却是没有结果的,该属性只用在 man中使用

    3.类的继承:

    python的基类中如果有相同的方法名,但是在子类中使用时却没有指定,python从左到右搜索就方法在子类中没有找到时,查找基类中是否包含方法

    如下:

    class dong:

     

    clas dong1要继承class dong

    clss dong1 (class dong)

    当然类可以多继承,但是要注意圆括号父类的排序,如果父类中有相同的方法名,但是子类使用时没用指定,python从左到右搜索再到父类中是否包含该方法。如下:

    calss dong1

    class dong2

    dong3继承上面的类

    class dong3(dong1,dong2):

         a=''

         def __init__(self ,n,a,w,g):

          dong1.__init___(self,n,a,w,g)

          dong2.__init__(self,n.t)

    test=sample("Tim",25,80,4,"python")

    test.speak()

    4.方法的重写:

    如果你的父方法的功能不可以满足你的需求,那么你可在子类重写你父的方法,如下:

    class P arent:

         def muMethon(self):

               print(" 调用父类方法")

    class  Child(Parent):

         def muMethon(self):

             print(" 调用子类的方法')

    c=Child()

    c.muMethon()

    执行以上代码的输出结果为:

    调用子类方法

    5.运算符重载;

    class dong:

        def __init__(self,a,b):

                self.a=a

                 self.b=b         

         def __str__(self):

             return' dong(%d,%d)'%(self.a,self.b)

          def__add__(self,other):

              retur dong(self.a+other.a,self.b+other.b)

    v1=dong(2,10)

    v2=dong(5,-2)

    print(v1+v2)

    以上代码的执行结果为dong(7,8)

    6.  装饰

    装饰

    对原有的方法进行美化,更好的实现功能,如下我们以吃火锅为例子:

    原材料:
    锅底

    装饰:

     肥牛 品羊肉  蔬菜



    import types


    def feiniu(n):
        print("肥牛:¥58")
        if type(n) == types.FunctionType:
            return  n()+58
        return n+58
    def shucai(n):
        print("蔬菜:$17")
        if type(n) == types.FunctionType:
            return n()+17
        return n+17
    @shucai
    @feiniu
    def mala():
        print("麻辣锅底:$12")
        return 12

    print("共消费:"+str(mala))

       

          

         

  • 相关阅读:
    使用SpringMVC的crud操作时,进行数据修改,但是修改成功后,页面无法显示lastName属性值(被修改的那条记录)
    使用SpringMVC时报错HTTP Status 405
    使用springmvc时报错org.springframework.beans.NullValueInNestedPathException: Invalid property 'department' of bean class [com.atguigu.springmvc.crud.entities.Employee]:
    快速傅里叶变换应用之二 hdu 4609 3-idiots
    离散傅立叶变换与快速傅立叶变换(DFT与FFT)
    深度优先搜索(DFS)递归形式改为非递归形式
    模拟题组
    STL--自定义类型的排序
    多关键字的快速排序
    二叉树的前序和中序得到后序 hdu1710
  • 原文地址:https://www.cnblogs.com/xiaodong520/p/7528331.html
Copyright © 2020-2023  润新知