面向對象編程時,都會遇到一個概念,類,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's name is Willie.My dog is 6 years old.
class關鍵字:來定義一個類。類名通常首字母為大寫。
__init__方法:特殊方法,每當實例類的時候都會運行。其中的形參self必不可少,而且必須位于最前面。
self形參:類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱,但是在調用這個方法的時候
用不為這個參數賦值,Python會提供這個值。這個特別的變量指對象本身。
實例的方法是指定類名以及需要傳入的實參。
要訪問實例的屬性或者調用方法,可使用句點表示法。
使用類和實例
class Car(): def __init__(self, make, model, year): self.make = make self.model = model self.year = year self.odometer_reading = 0 #<- here 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) + " miles on it.") my_new_car = Car('audi', 'a4', 2016)print(my_new_car.get_descriptive_name())my_new_car.read_odometer() 運行結果:2016 Audi A4
可以看到,我們給Car類的屬性指定了默認值self.odometer_reading = 0。如果要修改它,我們可以通過實例直接訪問它并修改,比如:my_new_car.odometer_reading = 23?;蛘咄ㄟ^方法修改屬性的值?;蛘咄ㄟ^方法對屬性的值進行遞增。
class Car(): --snip-- #通過方法修改屬性的值 def update_odometer(self, mileage): self.odometer_reading = mileage #通過方法對屬性的值進行遞增 def increment_odometer(self, miles): self.odometer_reading += miles
繼承
一個類繼承另一個類時,他將自動獲得另一個類的所有屬性和方法;原有的類稱為父類,新類稱為子類。子類繼承了其父類的所有屬性和方法,同時還可以定義自己的屬性和方法。
現在我們有一個Car類如下
class Car(): def __init__(self, make, model, year): self.make = make self.model = model self.year = year self.odometer_reading = 0 #<- here 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) + " miles on it.") def update_odometer(self, mileage): self.odometer_reading = mileage def increment_odometer(self, miles): self.odometer_reading += miles
新聞熱點
疑難解答