面向對象編程是一種很是有效的軟件編寫方法之一,在面向對象編程中,咱們會編寫表示現實世界中的事物或者情景的類,並基於類來建立對象。python
在編寫類的的時候,這些類對象通常都有通用的行爲或者屬性。基於類建立對象時,每一個對象都自動具有這些屬性和行爲,而後給予須要給與這些對象一些特殊的屬性或者行爲。編程
咱們幾乎可使用面向對象的方式來模擬現實生活中的全部情景。函數
根據類來建立隊形被稱爲實例化,這讓你可以使用類的實例。spa
咱們使用一個例子來講明怎麼建立一個類。code
咱們假設建立一個名叫dog的類,咱們知道狗狗通常會跑,叫,有些還會坐下,這些都是這個類的一些行爲,咱們也能夠定義它的一些屬性,好比名字和年齡。咱們能夠再代碼中這樣來實現這個類:對象
class Dog(): def __init__(self, name, age): self.name = name self.age = age def sit(self): print(self.name + " is sitting.") def run(self): print(self.name + " is running.") def bark(self): print(self.name + " is barking.")
在上面代碼中咱們能夠看到,咱們定義可一個dog類,在python的約定中,咱們通常用首字母大寫來表示類。blog
在定義好類的名字後,咱們看到Python使用__init__來初始化類對象,就像一個構造函數同樣。咱們能夠在這個函數方法中來初始化和定義咱們須要的一些變量(屬性),好比表示自身的self,表示名字的name,表示年齡的age。這些屬性一旦定義好後,能夠在類的方法中使用。當類被實例化成對象後,對象自動擁有這些屬性。it
這個類還被定義了一些方法,好比run,sit和bark,在這些方法中咱們也能夠看到,他能夠自動的調用name,age等參數,由於他們已是類的屬性。面向對象編程
根據類,咱們能夠建立和實例化一個對象。咱們能夠把dog類看作是一個對象的說明,而實例化的過程,實際就是根聽說明建立一個對象的過程。class
class Dog(): def __init__(self, name, age): self.name = name self.age = age def sit(self): print(self.name + " is sitting.") def run(self): print(self.name + " is running.") def bark(self): print(self.name + " is barking.") my_dog = Dog('WanCai', 5 )
咱們能夠看到,咱們使用code:my_dog = Dog('WanCai', 5 ) 來實例化了一個叫wancai, 6歲的名叫my-dog的對象。
一旦實例化了一個對象,咱們就能夠調用這個對象的屬性和方法:
my_dog = Dog('WanCai', 5 ) print(type(my_dog)) print("name is : " + my_dog.name) print("age is : " + str(my_dog.age)) my_dog.sit() my_dog.run() my_dog.bark() ''' 輸出: <class '__main__.Dog'> name is : WanCai age is : 5 WanCai is sitting. WanCai is running. WanCai is barking. '''
一旦咱們定義好了類,咱們能夠根據實際的須要來建立多個實例:
my_dog = Dog('WangCai', 5 ) print(type(my_dog)) print("name is : " + my_dog.name) print("age is : " + str(my_dog.age)) my_dog.sit() my_dog.run() my_dog.bark() rachel_dog = Dog('LaiFu', 5 ) print(type(rachel_dog)) print("name is : " + rachel_dog.name) print("age is : " + str(rachel_dog.age)) rachel_dog.sit() rachel_dog.run() rachel_dog.bark() ''' 輸出: <class '__main__.Dog'> name is : WangCai age is : 5 WangCai is sitting. WangCai is running. WangCai is barking. <class '__main__.Dog'> name is : LaiFu age is : 5 LaiFu is sitting. LaiFu is running. LaiFu is barking. '''