python面向对象类创建人物类包含姓名、职业_python面向对象类
面向對象變成介紹
面向過程編程
核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比精心設計好一條流水線,考慮周全什么時候處理什么東西。主要應用在一旦完成很少修改的地方,如linux內核、git、apache服務器等
優點:極大的降低了程序的設計復雜度
缺點:可擴展性差,改動一個地方很可能要改多個地方,牽一發而動全身
面向對象編程:不是編程的全部,只是用來解決軟件可擴展性的
核心是對象(上帝式思維),對象作為程序的基本單元,一個對象包含了數據和操作數據的函數。面向對象就是把計算機程序作為一個對象集合,每隔對象都能接收其他對象傳來的消息,計算機程序的執行就是就是一系列消息在各個對象之間傳遞。主要應用在需求經常變化的軟件,一般需求的變化都集中在用戶層,互聯網應用,企業內部軟件,游戲等
優點:解決了程序的可擴展性差的問題,對某一個對象修改會立刻反映到整個程序體系
缺點:可控性差,無法預測程序執行結果
類和對象
對象的概念
對象也叫做實例,是通過類產生的,對象就是數據屬性和方法屬性的結合體,比如lol中的英雄,一個英雄就是一個對象,具備生命值、藍條攻擊力等數據屬性,又具備qwer四個技能屬于方法屬性。
類的概念
類包含了一組對象的相同屬性部分,比如游戲人物,所有的人物都有名字、標簽(坦克戰士法師)、生命值、藍條攻擊力等,雖然具體的值不同,但是都可以包含在類中去生成。
在python中,用變量表示是數據屬性,用函數表示方法屬性。
在現實生活中,先有對象后有類,比如先有的人,后有的人類的概念,而在編程中,是先有的類,后有的對象,類生成對象。
聲明一個類:和函數的定義類似
定義函數:通過def關鍵字
定義類:通過class關鍵字
'''class 類名:
數據屬性
方法屬性'''
classStyle:pass
classChinese:
country='china' #數據屬性
def __init__(self,name,color,age): #init函數一定不能有返回值,只能初始化
if notisinstance(name,str):raiseTypeError
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)defeat(self):print('is eating')deflaugh(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__': , 'talk': , 'eat': , 'laugh': , '__dict__': , '__weakref__': , '__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面向对象类创建人物类包含姓名、职业_python面向对象类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java从键盘输入一个数,并将其倒序输出
- 下一篇: 以30字符宽居中输出python字符串_