1. 程式人生 > >python面向對象類

python面向對象類

type peer git 包含 ron 產生 其他 code ttr

面向對象變成介紹

面向過程編程

核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比精心設計好一條流水線,考慮周全什麽時候處理什麽東西。主要應用在一旦完成很少修改的地方,如linux內核、git、apache服務器等

優點:極大的降低了程序的設計復雜度

缺點:可擴展性差,改動一個地方很可能要改多個地方,牽一發而動全身

面向對象編程:不是編程的全部,只是用來解決軟件可擴展性的

核心是對象(上帝式思維),對象作為程序的基本單元,一個對象包含了數據和操作數據的函數。面向對象就是把計算機程序作為一個對象集合,每隔對象都能接收其他對象傳來的消息,計算機程序的執行就是就是一系列消息在各個對象之間傳遞。主要應用在需求經常變化的軟件,一般需求的變化都集中在用戶層,互聯網應用,企業內部軟件,遊戲等

優點:解決了程序的可擴展性差的問題,對某一個對象修改會立刻反映到整個程序體系

缺點:可控性差,無法預測程序執行結果

類和對象

對象的概念

對象也叫做實例,是通過類產生的,對象就是數據屬性和方法屬性的結合體,比如lol中的英雄,一個英雄就是一個對象,具備生命值、藍條攻擊力等數據屬性,又具備qwer四個技能屬於方法屬性。

類的概念

類包含了一組對象的相同屬性部分,比如遊戲人物,所有的人物都有名字、標簽(坦克戰士法師)、生命值、藍條攻擊力等,雖然具體的值不同,但是都可以包含在類中去生成。

在python中,用變量表示是數據屬性,用函數表示方法屬性。

在現實生活中,先有對象後有類,比如先有的人,後有的人類的概念,而在編程中,是先有的類,後有的對象,類生成對象。

聲明一個類:和函數的定義類似

定義函數:通過def關鍵字

定義類:通過class關鍵字

‘‘‘
class 類名:
    數據屬性
    方法屬性
‘‘‘
class Style:
    pass
class Chinese:
    country=china #數據屬性
    def __init__(self,name,color,age):  #init函數一定不能有返回值,只能初始化
        if not isinstance(name,str):
            raise TypeError
        self.name=name #p1.name=‘xiaobai‘
self.color=color #p1.color=‘yellow‘ self.age=age #p1.age=22 def talk(self): #函數屬性 print(%s is talking%self.name) def eat(self): print(is eating) def laugh(self): print(is laughing) #實例化:__init__(p1,name,color,age) p1=Chinese(xiaobai,yellow,22) p2=Chinese(xiaohei,yellow,25) print(Chinese.__dict__)#使用__dict__查看Chinese類下的屬性 print(p1.__dict__)#使用__dict__查看Chinese對象實例化p1下的屬性 p1.talk()
print(Chinese.country,id(Chinese.country))
print(p1.country,id(p1.country))

執行結果

{‘__module__‘: ‘__main__‘, ‘country‘: ‘china‘, ‘__init__‘: <function Chinese.__init__ at 0x0000024C5D9CB9D8>, ‘talk‘: <function Chinese.talk at 0x0000024C5D9CBA60>, ‘eat‘: <function Chinese.eat at 0x0000024C5D9CBAE8>, ‘laugh‘: <function Chinese.laugh at 0x0000024C5D9CBB70>, ‘__dict__‘: <attribute ‘__dict__‘ of ‘Chinese‘ objects>, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘Chinese‘ objects>, ‘__doc__‘: None} #Chinese.__dict__


{‘name‘: ‘xiaobai‘, ‘color‘: ‘yellow‘, ‘age‘: 22} #p1.__dict__


xiaobai is talking #p1.talk()

china 2906932484504 #print(Chinese.country,id(Chinese.country))


china 2906932484504 #print(p1.country,id(p1.country))

從執行結果中可以看出類有數據屬性和函數屬性,對象只有數據屬性。對象有著類所沒有的數據屬性,並且對象有著類中共同的數據屬性和函數屬性。

python面向對象類