Python 創建和使用類
python創建和使用類的方法如下
# class Dog(): # def __init__(self,name,age): # self.name=name # self.age=age # # def sit(self): # print(self.name.title()+"is now sitting") # # def roll_over(self): # print(self.name.title()+" rolled over!") # # my_dog=Dog("willie",6) ##print("My dog‘s name is "+my_dog.name.title()+".") # #print("My dog is "+str(my_dog.age)+"years old.") # my_dog.sit() # my_dog.roll_over()
1、方法__init__() 是一個特殊的方法,包含三個形參:self 、name 和age 。在這個方法的定義中,形參self 必不可少,還必須位於其他形參的前面。因為Python調用這個__init__() 方法來創建Dog 實例時,將自動傳入實參self 。每個與類相關聯的方法調用都自動傳遞實參self ,它是一個指向實例本身 的引用,讓實例能夠訪問類中的屬性和方法。我的理解self這個形參是必不可少的,因為在類中定義方法的時候一定會有self這個形參。然後看下面這段代碼
# class Dog(): # def __init__(self,name,age): # self.name=name # self.age=age
我理解是name和age都是類Dog中的屬性,這是對類中的屬性進行初始化,因為類中的每個屬性必須有初始值。同時記住以self 為前綴的變量都可供類中的所有方法使用,上面代碼中的函數定義,函數只有一個self參數,但是函數體中可以使用 age,name這些屬性。
在根據類創建實例的時候,比如
my_dog = Dog(‘willie‘, 6)
此時的self這個參數會默認自動傳遞,因此我們要傳遞的只是後面的兩個參數。實例化結束後,我們可以通過Dog的實例來使用類中定義的函數或者直接訪問類中有的屬性。
__init__方法是對類的屬性進行初始化,因此在該方法中要傳遞屬性的初始值作為參數,當然你也可以直接對某個屬性直接進行初始化,這樣的話就不用在
__init__方法中提供這個屬性的形參了;
class Car(): def __init__(self,make,model,year): self.make=make self.model=model self.year=year self.odometer_reading=0 def get_descriptive_name(self): long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + self.model return long_name.title() def read_odometer(self): print("This car has "+str(self.odometer_reading)+" niles on it.")
這裏的self.odometer_reading=0直接初始化為0,因此不必在 _init_方法中為該屬性提供形參作為默認的初始值。
還有,如果每次需要改變屬性的值時都要在實例化時作更改,豈不是很麻煩?
所有有以下幾種方式修改屬性值。
1. 直接修改屬性的值比如上面的odometer_reading = 0,可以這樣修改 my_new_car.odometer_reading = 23
2.通過方法來修改
def update_odometer(self, mileage): """將裏程表讀數設置為指定的值""" self.odometer_reading = mileage
在類中定義一個方法專門來修修改屬性的,如果需要更變屬性的時候,直接調用該方法即可。
不過那些屬性初始值是在_init_方法中的參數的,並不能通過以上的方式來修改(只能在初始化實例的時候傳參修改?)
能操作的只是那些個沒在在類的 _init_函數參數中有初始值的屬性。也就是上面的 self.odometer_reading=0 這個屬性是能被修改的,其他的 model,make,year 這這些屬性只能在實例化類的時候在參數中修改
應該只 這樣子的
Python 創建和使用類