Python面向對象

面向對象三大特性

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.字段:普通字段(保存在對象中)、靜態字段(保存在類中)

方法:普通方法(保存在類中、調用者是對象)、靜態方法(保存在類中,調用者(無需建立對象),能夠有任意個參數)

相關文章
相關標籤/搜索