Python 類,Python
1、建立和使用類
使用類幾乎可以類比任何東西。
1.1建立Dog類
根據Dog類建立的每個執行個體都將儲存名字和年齡。我們賦予了每條小狗蹲下sit()和打滾roll_over()的能力
#!/usr/bin/env pythonclass Dog: """一次類比小狗的簡單嘗試""" def __init__(self,name,age): """初始化屬性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() + "roll over!")my_dog = Dog('white',18)print("My dog name is " + my_dog.name.title() + ".")print("My dog is " +str(my_dog.age) + " years old!")my_dog.sit()my_dog.roll_over()================================================My dog name is White.My dog is 18 years old!White is now sitting!Whiteroll over!
1.2建立多個執行個體
#!/usr/bin/env pythonclass Dog: """一次類比小狗的簡單嘗試""" def __init__(self,name,age): """初始化屬性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() + "roll over!")my_dog = Dog('white',18)your_dog = Dog('black',19)my_dog.sit()my_dog.roll_over()your_dog.sit()your_dog.roll_over()==============================================White is now sitting!Whiteroll over!Black is now sitting!Blackroll over!
2、使用類和執行個體
①Car類
#!/usr/bin/env pythonclass Car(): """一次類比汽車的簡單嘗試""" def __init__(self,make,model,year): """初始化描述汽車的屬性""" self.make = make self.model = model self.year = year def get_descriptive_name(self): """返回整潔的描述資訊""" long_name = str(self.year) + ' ' +self.make + ' ' + self.model return long_name.title()my_new_car = Car('audi','a4',2017)print(my_new_car.get_descriptive_name())===============================================2017 Audi A4
②給屬性指定預設值
#!/usr/bin/env pythonclass 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) + " miles on it.")my_new_car = Car('audi','a4',2017)print(my_new_car.get_descriptive_name())my_new_car.read_odometer()============================================2017 Audi A4This car has 0 miles on it.
③修改屬性的值
可以以三種不同的方式修改屬性的值:直接通過執行個體進行修改;通過方法進行設定;通過方法進行遞增(增加特定的值)
#!/usr/bin/env pythonclass Car(): """一次類比汽車的簡單嘗試""" def __init__(self,make,model,year): """初始化描述汽車的屬性""" self.make = make self.model = model self.year = year self.odometer_reading = 23 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',2017)print(my_new_car.get_descriptive_name())my_new_car.read_odometer()===============================================2017 Audi A4This car has 23 miles on it.
#!/usr/bin/env pythonclass 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) + " miles on it.") def update_odometer(self,mileage): """將里程錶讀數設定為指定的值""" self.odometer_reading = mileagemy_new_car = Car('audi','a4',2017)print(my_new_car.get_descriptive_name())my_new_car.update_odometer(23)my_new_car.read_odometer()==============================================2017 Audi A4This car has 23 miles on it.
對Car類所做的唯一修改是添加了方法update_odometer()。這個方法接受一個裡程值,並將其儲存到self.odometer_reading中。
3、繼承
編寫類時,並非總是從空白開始。如果你要編寫的類時另一個現成類的特殊版本,可使用繼承。一個類繼承另一個類時,它將自動獲得另一個類的所有屬性和方法;原有的類稱為父類,而新類稱為子類。子類繼承了其父類的所有屬性和方法,同時還可以定義自己的屬性和方法。
#!/usr/bin/env pythonclass 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) + " miles on it.") def update_odometer(self,mileage): if mileage >= self.odometer_reading: self.odometer_reading = mileage else: print("You cant roll back an odometer!") def increment_odometer(self,miles): self.odometer_reading += milesclass ElectricCar(Car): """電動車的獨特之處""" def __init__(self,make,model,year): """初始化父輩的屬性""" super().__init__(make,model,year)my_tesla = ElectricCar('tesla','model s',2017)print(my_tesla.get_descriptive_name())==========================================2017 Tesla Model S
4、匯入類
#!/usr/bin/env pythonfrom car import Carmy_new_car = Car('audi','a4',2017)print(my_new_car.get_descriptive_name())my_new_car.odometer_reading = 23my_new_car.read_odometer()=======================================2017 Audi A4This car has 23 miles on it.
從一個模組中匯入多個類:
from car import Car,ElectricCar