標籤:資料 分享圖片 python dog turn display isp 參數 /usr
一、物件導向
python本身就是一門物件導向的語言,物件導向的程式設計的核心是對象,首先要理解什麼是對象。
物件導向的優點:解決了程式的擴充性。
物件導向的缺點:可控性差。
1、物件導向的名詞簡介
類(class):用來描述具有相同的屬性和方法的對象的集合,他定義了該集合中每一個對象所共有的屬性和方法,對象是類的執行個體;
類變數:類變數在整個執行個體化的對象中是公用的。
執行個體化:建立一個類的執行個體,類的具體對象。
方法:類中定義的函數
對象:通過類定義的資料結構執行個體;對象包括兩個資料成員(類變數和執行個體變數)和方法
2、類的文法:
class 類名: 屬性 = aprint(類名.屬性)#類名的作用就是操作屬性 查看屬性
類執行個體化後,可以使用其屬性,實際上建立一個類之後,可以通過類名訪問其屬性。
3、類對象
類對象支援兩種操作:屬性引用和執行個體化。
屬性引用使用和 Python 中所有的屬性引用一樣的標準文法:obj.name。
類對象建立後,類命名空間中所有的命名都是有效屬性名稱。所以如果類定義是這樣:
#!/usr/bin/python# -*- encodeing:utf-8 -*-class MyClass: """一個簡單的類執行個體""" i = 12345 def f(self): return ‘hello world‘print(MyClass.i)
類定義
很多類都傾向於將對象建立為有初始化狀態的。因此類可能會定義一個名為__init__()的特殊方法,類的執行個體化操作會自動調用__init__()方法,__init__() 方法可以有參數,參數通過 __init__() 傳遞到類的執行個體化操作上,執行個體如下:
#!/usr/bin/python# -*- encodeing:utf-8 -*-class Person(): def __init__(self,*args): self.name = args[0] self.age = args[1] self.sex = args[2]ret = Person(‘小明‘,10,‘男‘)
__init__
4、self 代表類的執行個體,而不是類
類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱, 按照慣例它的名稱是 self。
#!/usr/bin/python# -*- encodeing:utf-8 -*-class Test: def prt(self): print(self) print(self.__class__)t = Test()t.prt()
View Code
5、類的方法
在類地內部,使用 def 關鍵字來定義一個方法,與一般函數定義不同,類方法必須包含參數 self, 且為第一個參數,self 代表的是類的執行個體。
#!/usr/bin/python# -*- encodeing:utf-8 -*-class Dog: def __init__(self,name,blood,aggr,kind): self.name = name self.hp = blood self.aggr = aggr self.kind = kind def bite(self,person): # 狗咬人,人掉血 if person.blood <= 0: print(‘%s咬了%s,%s被咬死了‘%(self.name,person.name,person.name)) else: print(‘%s咬了%s,%s掉了%s血‘ %(self.name,person.name,person.name,self.aggr))class Person: def __init__(self,name,blood,aggr,sex): self.name = name self.blood = blood self.aggr = aggr self.sex = sex def attack(self,dog): if dog.hp <= 0: print(‘%s打了%s,%s被打死了‘ %(self.name,dog.name,dog.name)) else: print(‘%s打了%s,%s掉了%s血‘ % (self.name, dog.name, dog.name,self.aggr))dog1 = Dog(‘旺財‘,990,80,‘keddy‘)alex = Person(‘張三‘,999,998,‘不詳‘)dog1.bite(alex)alex.attack(dog1)
人與狗執行個體
Python物件導向