1. 程式人生 > >Python 創建和使用類

Python 創建和使用類

dog 修改屬性 des upd 方式 pre 改變 get def

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 創建和使用類