首页 > 代码库 > [python面向对象]--基础篇

[python面向对象]--基础篇

1.#    #类就是一个模板,模板里可以包含多个函数,函数里实现一些功能    #定义一个类    class bar:        def foo(self,agr):            print(self,agr)    obj = bar()    print(obj)    print(obj.foo("调用类的方法"))2.#方法    #把函数写在类里就是方法    #构造方法    #普通方法        class person:            def __init__(self,name,age):                #构造方法的特性,调用   类名() 后,自动执行构造方法                #self 谁调用类,谁就是self                self.n = name                self.a = age                self.xue = 0            def show(self):   #普通方法                print("%s--%s"%(self.n,self.a))        obj = person("haha",20)        obj.show()3.#面向对象三大特性之一:封装    class bar:        def __init__(self,n,a):            self.name = n            self.age = a            self.xun = 0    b1 = bar("zhangw",11)    b2 = bar("haha",31)4.#面向对象三大特性之二:继承    #self永远是执行该方法的调用者    #继承    class 父类:        pass    class 子类(父类):        pass    #子类可以调用父类的方法    #如果子类中有和父类一样的方法名,则优先调用自己的,也就是重写    #重写,防止执行父类的方法    #重写后,如果想要执行父类的方法        1.#super(子类,self).父类中的方法()        2.#父类名,父类中的方法(self,...)    #python中支持多继承        #原则            #1.左侧优先,这里的左侧指的是调用的时候,比如:class zilei(fulei1,fulei2),fulei1 优先            #2.左侧找完再找右侧            #3。如果左右两侧最后汇聚到同一个根,则最后找根5.#面向对象三大特性之三:多态    #原生多态,“鸭子类型”        #当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子    class F1:        pass    class S1(F1):        def show(self):            print(S1.show)    class S2(F1):        def show(self):            print(S2.show)    def Func(obj):        print(obj.show())    s1_obj = S1()    Func(s1_obj)    s2_obj = S2()    Func(s2_obj)6.#类成员    #字段        #普通字段,保存在对象中,只能通过对象访问        #静态字段,保存在类中,可以用个类,或者对象访问    #方法        #普通方法,保存在类中,由对象直接调用,self = > 对象        #静态方法,保存在类中,由类直接调用        #类方法,保存在类中,由类直接调用cls = >当前类    class province:        country = "中国"        def __init__(self,name):            self.name = name        @staticmethod   #静态方法        def jingtai():            print("我是静态方法,不需要对象")        @classmethod   #类方法        def classmd(cls):            print(cls)            print("haha")    print(province.country)    hebei = province("河北")    print(hebei.name)    province.jingtai()    province.classmd()    #属性,特性        #@property    # 由属性的定义和调用要注意一下几点:    # 定义时,在普通方法的基础上添加 @property 装饰器;    # 定义时,属性仅有一个self参数    # 调用时,无需括号        # 方法:foo_obj.func()        #属性:foo_obj.prop    # ############### 定义属性 ###############    class Goods(object):        @property        def price(self):            print(property)        @price.setter        def price(self, val):            print(val)        @price.deleter        def price(self):            print(666)    # ############### 调用 ###############    #obj = Goods()    #obj.price          # 自动执行 @property 修饰的 price 方法,并获取方法的返回值    #obj.price = 123    # 自动执行 @price.setter 修饰的 price 方法,并将  123 赋值给方法的参数    #del obj.price      # 自动执行 @price.deleter 修饰的 price 方法

 

[python面向对象]--基础篇