python從入門到實踐-9章類
#!/user/bin/env python
# -*- coding:utf-8 -*-
# 類名采用的是駝峰命名法,即將類名中每個單詞的首字母大寫,而不使用下劃線。
# 對于每個類,都應緊跟在類定義后面包含一個文檔字符串:簡要描述類的功能,并遵循寫函數的文檔字符串時的格式約定
# 每個模塊也應當包含一個文檔字符串,對其中的類可用于做什么進行描述。
class Dog():
def __init__(self,name,age):
'''__init__ 方法'''
'''形參self必不可少,還必須位于其他形參前面'''
self.name = name # 將name賦值到 self 為前綴的變量 供類使用
self.age = age # 【這一步是必須的】
def sit(self):
print(self.name.title() + " is setting now.")
def roll_over(self):
print(self.name.title() + " rolled over!")
# self 為前綴的變量都可以供類中所有方法使用。
my_dog = Dog('wille',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()
# 可以創建多個實列
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) + " miles on it")
def update_odometer(self,mileage):
"""將里程表讀數設置指定的值,禁止將里程表往回調"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self,miles):
"""將里程表讀數增加指定的量"""
self.odometer_reading += miles
my_new_car = Car('audi','a4','2016')
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
# 修改屬性的值
# 1.直接訪問汽車屬性odometer_reading值
# my_new_car.odometer_reading = 23
# my_new_car.read_odometer()
# 2.通過方法修改屬性的值
# 創建類函數來修改odometer_reading的值
my_new_car.update_odometer(23)
my_new_car.read_odometer()
# 通過方法對屬性的值進行遞增 increment_odometer
print('')
# 【繼承】
# super() 是一個特殊的函數,幫助python將父類和子類聯系起來。
# 這行代碼讓python調用其父類的方法__init__,讓子類包含父類所有的屬性。父類(又名超類superclass)
class ElectricCar(Car):
def __init__(self,make,model,year):
# 電動車的獨特之處,初始化父類的屬性,在初始化電瓶車獨特的屬性
super().__init__(make,model,year) # 調用其父類的方法__init__
self.battery_size = 70
def describe_battery(self):
print("this car has a " + str(self.battery_size) + "-kwh battery")
my_tesla = ElectricCar('tesla','model s','2016')
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()
# 重寫父類的方法 重名(覆蓋)即可進行重寫
print("")
# 【將實列用作屬性】
class Battery():
#模擬電動車電瓶
def __init__(self,batterY_size=70):
self.battery_size = batterY_size
def describe_battery(self):
print("this car has a " + str(self.battery_size) + "-kwh battery.")
class ElectricCar_0(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery = Battery()
# 調用實列當做屬性
my_tesla = ElectricCar_0('tesla','model s','2016')
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
# 方便于對Battery() 進行修改
# 導入類
# 導入單個類:from car(文件) import ElectricCar
# 從一個模塊中導入多個類:from car import Car,ElectricCar
# 導入整個模塊,在使用句號表示訪問需要的類:import car car.Car
# 導入模塊中所有類:from module_name import *
# 從模塊中導入的類可以被【繼承】
# python標準庫和外部庫

浙公網安備 33010602011771號