若是把對象比做一個「餅乾」,類就是製造這個餅乾的「模具」。ssh
咱們經過類定義數據類型的屬性(數據)和方法(行爲),也就是說,「類將行爲和狀態打 包在一塊兒」。ide
對象是類的具體實體,通常稱爲「類的實例」。類看作「餅乾模具」,對象就是根據這個「模 具」製造出的「餅乾」。函數
從一個類建立對象時,每一個對象會共享這個類的行爲(類中定義的方法),但會有本身的屬 性值(不共享狀態)。更具體一點:「方法代碼是共享的,屬性數據不共享」。this
Python中,「一切皆對象」。類也稱爲「類對象」,類的實例也稱爲「實例對象」。spa
定義類的語法格式以下:指針
class 類名:code
類體orm
要點以下:對象
1. 類名必須符合「標識符」的規則;通常規定,首字母大寫,多個單詞使用「駝峯原則」。blog
2. 類體中咱們能夠定義屬性和方法。
3. 屬性用來描述數據,方法(即函數)用來描述這些數據相關的操做。
【操做】一個典型的類的定義
#類的定義 class Student: #類名通常首字母大寫,多個單詞采用駝峯規則 def __init__(self,name,score): #self必需要有,必須位於第一個參數 self.name = name self.score = score def say_score(self): #self必需要有,必須位於第一個參數 print('姓名是:{0},分數是:{1}'.format(self.name,self.score)) s1 = Student('jack','100') #經過類名()調用構造函數 s1.say_score() #其餘操做 print(dir(s1)) #得到對象的全部屬性、方法 print(s1.__dict__) #對象的屬性字典 class Man: pass #空語句 print(isinstance(s1,Student)) #判斷「對象」是否是「指定類型」 print(isinstance(s1,Man))
運行結果:
姓名是:jack,分數是:100
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name', 'say_score', 'score']
{'name': 'jack', 'score': '100'}
True
False
類是抽象的,也稱之爲「對象的模板」。咱們須要經過類這個模板,建立類的實例對象,然 後才能使用類定義的功能。
過一個 Python 對象包含三個部分:id(identity 識別碼)、type(對象類型)、 value(對象的值)。
如今,咱們能夠更進一步的說,一個 Python 對象包含以下部分:
1. id(identity 識別碼)
2. type(對象類型)
3. value(對象的值)
(1) 屬性(attribute)
(2) 方法(method)
建立對象,咱們須要定義構造函數__init__()方法。構造方法用於執行「實例對象的初始化工 做」,即對象建立後,初始化當前對象的相關屬性,無返回值。
__init__()的要點以下:
1. 名稱固定,必須爲:__init__()
2. 第一個參數固定,必須爲:self。 self指的就是剛剛建立好的實例對象。
3. 構造函數一般用來初始化實例對象的實例屬性,以下代碼就是初始化實例屬性:name 和score。
def __init__(self,name,score):
self.name = name #實例屬性
self.score = score
4. 經過「類名(參數列表)」來調用構造函數。調用後,將建立好的對象返回給相應的變量。 好比:s1 = Student('張三', 80)
5. __init__()方法:初始化建立好的對象,初始化指的是:「給實例屬性賦值」
6. __new__()方法: 用於建立對象,但咱們通常無需重定義該方法。
7. 若是咱們不定義__init__方法,系統會提供一個默認的__init__方法。若是咱們定義了帶參 的__init__方法,系統不建立默認的__init__方法。
注:Python中的self 至關於C++中的 self 指針, JAVA和C#中的this 關鍵字。Python 中self必須爲構造函數的第一個參數,名字能夠任意修改。但通常遵照慣例,都叫作 self。
(一)實例屬性:
實例屬性是從屬於實例對象的屬性,也稱爲「實例變量」。他的使用有以下幾個要點:
1. 實例屬性通常在__init__()方法中經過以下代碼定義:
self.實例屬性名 = 初始值
2. 在本類的其餘實例方法中,也是經過self 進行訪問:
self.實例屬性名
3. 建立實例對象後,經過實例對象訪問:
obj01 = 類名() #建立對象,調用__init__()初始化屬性
obj01.實例屬性名 = 值 #能夠給已有屬性賦值,也能夠新加屬性
(二)實例方法:
實例方法是從屬於實例對象的方法。實例方法的定義格式以下:
def 方法名(self [, 形參列表]):
函數體
方法的調用格式以下:
對象.方法名([實參列表])
要點:
1. 定義實例方法時,第一個參數必須爲self。和前面同樣,self 指當前的實例對象。
2. 調用實例方法時,不須要也不能給self 傳參。self 由解釋器自動傳參。
函數和方法的區別:
1. 都是用來完成一個功能的語句塊,本質同樣。
2. 方法調用時,經過對象來調用。方法從屬於特定實例對象,普通函數沒有這個特色。
3. 直觀上看,方法定義時須要傳遞self,函數不須要。
實例對象的方法調用本質:
其餘操做:
1. dir(obj)能夠得到對象的全部屬性、方法
2. obj.__dict__ 對象的屬性字典
3. pass 空語句
4. isinstance(對象,類型) 判斷「對象」是否是「指定類型」