總結了下面向對象的三大特性
#!/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...