1、封裝python
#1.將內容封裝到某處
#建立類 class Foo: def __init__(self,name,age): #稱爲構造方法,根據類建立對象時自動執行 self.name=name self.age=age #根據類Foo建立對象 #自動執行Foo類的__init__方法 obj1=Foo("wupeiqi",18) #將wupeiqi和18分別封裝到obj1(即self)的name和age的屬性中 obj2=Foo('alex',73)
#2.從某處調用封裝的內容
#2.1經過對象直接調用被封裝的內容
class Foo(): def __init__(self,name,age): #稱爲構造方法,根據類建立對象時自動執行 self.name=name self.age=age obj1= Foo('wupeiqi',18) print(obj1.name) print(obj1.age) obj2=Foo('alex',73) print(obj2.name) print(obj2.age)
#2.2經過self間接調用
class Foo(): def __init__(self,name,age): #稱爲構造方法,根據類建立對象時自動執行 self.name=name self.age=age def detail(self): print(self.name) print(self.age) obj1=Foo('wupeiqi',18) obj1.detail() #python默認將obj1傳給self參數,即obj1.detail(obj1),因此此時方法內部的self=obj1,即:self.name是wupeiqi;self.age是18 obj2=Foo('alex',73) obj2.detail()
2、繼承服務器
#繼承
# 動物:吃、喝、拉、撒
#
# 貓:喵喵叫(貓繼承動物的功能)
#
# 狗:汪汪叫(狗繼承動物的功能)
class Animal: def eat(self): print('%s吃'%self.name) def drink(self): print('%s喝'%self.name) def shit(self): print('%s拉'%self.name) def pee(self): print('%s撒'%self.name) class Cat(Animal): def __init__(self,name): self.name=name self.breed='貓' def cry(self): print('喵喵叫') class Dog(Animal): def __init__(self,name): self,name=name self.dreed='狗' def cry(self): print('汪汪叫') #############執行############## c1=Cat('小白家的小黑貓') c1.eat() c2=Cat('小黑家的小白貓') c2.drink() d1=Dog('胖子家的小痩狗') d1.eat()
3、多態函數
1.若是某個函數傳入多個共同的參數時spa
2.根據某個模板建立某些東西code
3.使用同一個對象鏈接時對象
class SSH: def __init__(self,host,port,pwd,username): self.host=... def connection(self): #去建立鏈接 self.conn=和服務器建立的鏈接對象 def close(self): self.comm.關閉 def upload(self): self.conn 使用鏈接上傳文件 def cmd(self): self.conn 使用鏈接執行命令 obj=SSH(...) obj.connection()
補充:blog
1.self就是調用當前方法的對象繼承
靜態字段適用場景:每一個對象中保存相同的東西時,能夠使用靜態字段接口
2.cmd
類?屬性(實例變量、類變量、私有屬性__var)、方法(構造方法、析構方法 (在銷燬實例時能夠寫)、私有方法)
對象?實例化一個類以後獲得的對象
封裝?把一些功能的實現細節不對外暴露
-----類中封裝了:字段、方法
-----對象中封裝了:普通字段的值
舉例:
繼承?代碼的重用、單繼承、多繼承(py2.7:經典類:深度優先,新式類:廣度優先;py3.0:均是廣度優先,推薦寫新式類class Foo(object))
多態?多種形態、接口的重用
Python中默認支持多態
3.字段:普通字段(保存在對象中)、靜態字段(保存在類中)
方法:普通方法(保存在類中、調用者是對象)、靜態方法(保存在類中,調用者(無需建立對象),能夠有任意個參數)