总结了下面向对象的三大特性
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author: linghanchujian # python类 # 类模板 """ class class_module: # 私有属性 __name = "name" def __init__(self): print("----------构造函数------") print("----------初始化调用函数") pass # 私有方法 def __mian(self): pass def __del__(self): print("------析构函数----") print("------实例不使用或程序退出时调用!!") pass """ # ofo类实例 class ofo: name = "Linghanchujian" def __init__(self,name="name",age=22): self.name = name self.age = age pass def __del__(self): print("ofo类结束") pass # r = ofo() # # print(r.name,r.age) # 继承 print("---------------------------------------------继承----------------------------") class class_inherit(object): def __init__(self,name,age): self.name = name self.age = age pass def eat(self): print("{name} is eating...".format(name = self.name)) pass def sleep(self): print("%s is sleeping..."%self.name) pass pass class class_sub(class_inherit): def __init__(self,name,age,sex): # super(class_sub,self).__init__(name,age) class_inherit.__init__(self,name,age) #super(class_sub,self).__init__(name,age) 等同 self.sex = sex pass def Sub(self): print("name:%s , age:%s , sex:%s "%(self.name,self.age,self.sex)) pass def eat(self): class_inherit.eat(self) print("classSub sex:%s"%self.sex) pass pass u = class_sub("Linghanchujian",22,"男") u.eat() u.sleep() u.Sub() # 多继承 class class_inherit2(object): def inherit(self,obj): print("%s love %s"%(self.name,obj.name)) pass pass class class_sub2(class_inherit,class_inherit2): pass m1 = class_sub2("Linghanchujian",22) m2 = class_sub2("weiwuxingxuan",22) m1.inherit(m2) # python2.x 中经典类的继承是深度优先,新式类是广度优先 # python3.x 中同一为广度优先 # 继承方式为 # inherit父类 # sub and sub2 --继承-->inherit # sub_sub --继承--> sub and sub2 # # 初始化方式(前提inherit、sub、sub2、sub_sub类中只有一个__init__方法) # python2.x经典类初始化顺序 深度优先 # sub_sub --> sub --> inherit --> sub2 # python2.x 新式类 和 python3.x 同一为广度优先 # sub_sub --> sub --> sub2 --> inherit class inherit: #经典类 def __init__(self): print("my name is class_inherit3!!") pass pass class inherit2(object):#新式类 def __init__(self): print("my name is class_inherit4!!") pass pass class sub(inherit): def __init__(self): print("my name is sub") pass pass class sub2(inherit): def __init__(self): print("my name is sub2") pass pass class sub_sub(sub,sub2): def __init__(self): print("my name is sub_sub") pass pass # 多态 print("---------------------------------------------多态----------------------------") class Animal(object): def __init__(self,name): self.name = name pass def eat(self): print("%s is eating..."%self.name) pass @staticmethod def Animal_eat(obj): obj.eat() pass pass class Dog(Animal): pass class Cat(Animal): pass m1 = Dog("m1") m2 = Cat("m2") Animal.Animal_eat(m1) Animal.Animal_eat(m2)
下面是运行结果
---------------------------------------------继承---------------------------- Linghanchujian is eating... classSub sex:男 Linghanchujian is sleeping... name:Linghanchujian , age:22 , sex:男 Linghanchujian love weiwuxingxuan ---------------------------------------------多态---------------------------- m1 is eating... m2 is eating...