6.python的基礎語法元素_類

#-*- coding: utf-8 -*-

print ("=============類的三要素:類名、屬性、方法==============")
#類是對象的載體,我們可以把一類對象的公共特徵抽象出來,創建通用的類
#創建類
class Cat():
    """模擬篇"""
    def __init__(self,name):
        """初始化屬性"""
        self.name = name
    def jump(self):
        """模擬貓的跳躍"""
        print(self.name+" is jumping")

#用類創建實例
my_cat = Cat("Loser")
your_cat = Cat("Lucky")

#調用屬性
print(my_cat.name)
print(your_cat.name)
#調用方法
my_cat.jump()
your_cat.jump()

print("=============類的命名==============")
#類的命名要有實際意義 採用駝峯命名法,即組成的單詞首字母大寫
#類的屬性
#def __init__(self,要傳遞的參數)  初始化類的操作
#無論是初始化類還是定義方法的時候,都需要有self參數
class Car():
    """模擬汽車"""

    def __init__(self,brand,model,year):
        """初始化汽車屬性"""         #相當於類內部的變量
        self.brand = brand
        self.model = model
        self.year = year
        self.mileage = 0   #新車總里程初始化爲0

    def get_main_infomation(self):  #self不能省略
        """獲取汽車的主要信息"""
        print("品牌:{} 型號:{} 出廠年份:{}".format(self.brand,self.model,self.year))

    def get_mileage(self):
        """獲取總里程數"""
        return "汽車行駛總里程:{}公里".format(self.mileage)

print("=============創建實例================")
#創建實例  將實例賦值給對象,實例化過程中,傳入相應的參數 v = 類名(必要的初始化參數)
my_new_car = Car("Audi","A6","2018")

#訪問屬性  類名.類屬性
print(my_new_car.brand)
print(my_new_car.model)
print(my_new_car.mileage)
#方法調用  實例名.方法名(必要的參數)
my_new_car = Car("Audi","A6","2018")
my_new_car.get_main_infomation()
s = my_new_car.get_mileage()
print (s)

#屬性修改
#直接修改 先訪問 後修改
my_new_car = Car("BYD","宋",2016)
my_new_car.mileage = 12000
print(my_new_car.mileage)

#通過方法修改屬性
class Car1():
    """模擬汽車"""

    def __init__(self,brand,model,year,distance):
        """初始化汽車屬性"""         #相當於類內部的變量
        self.brand = brand
        self.model = model
        self.year = year
        self.mileage = 0   #新車總里程初始化爲0

    def get_main_infomation(self):  #self不能省略
        """獲取汽車的主要信息"""
        print("品牌:{} 型號:{} 出廠年份:{}".format(self.brand,self.model,self.year))

    def get_mileage(self):
        """獲取總里程數"""
        return "汽車行駛總里程:{}公里".format(self.mileage)
    def set_mileage(self,distance):
        """設置總里程數"""
        self.mileage = distance


print("===============類的繼承=================")
#所謂繼承,就是底層級的抽象繼承高層級的抽象的過程
#簡單的繼承
#父類

class Car():
    """模擬汽車"""

    def __init__(self,brand,model,year):
        """初始化汽車屬性"""         #相當於類內部的變量
        self.brand = brand
        self.model = model
        self.year = year
        self.mileage = 0   #新車總里程初始化爲0

    def get_main_infomation(self):  #self不能省略
        """獲取汽車的主要信息"""
        print("品牌:{} 型號:{} 出廠年份:{}".format(self.brand,self.model,self.year))

    def get_mileage(self):
        """獲取總里程數"""
        return "汽車行駛總里程:{}公里".format(self.mileage)


#構造電動汽車子類  class 子類名(父類名):
class ElectricCar(Car):
    "模擬電動汽車"

    def __init__(self,brand,model,year):
        """初始化電動汽車屬性"""
        super().__init__(brand,model,year) #聲明繼承父類的屬性,此時子類自動繼承父類方法

#使用子類
my_electric_car = ElectricCar("NextWeek","FF91",2046)
my_electric_car.get_main_infomation()

#給子類添加屬性和方法
class ElectricCar1(Car):
    """模擬電動汽車"""
    #新傳入電池容量數據
    def __init__(self,brand,model,year,bettery_size):
        super().__init__(brand,model,year) #聲明繼承父類的屬性,此時子類自動繼承父類方法
        self.bettery_size = bettery_size #電池容量
        self.electric_quantity = bettery_size #電池剩餘容量
        self.electric2distance_ratio = 5 #電池距離換算係數
        self.remainder_range = self.electric_quantity*self.electric2distance_ratio   #剩餘可行駛旅程

    def get_electric_quantity(self):
        """查看當前電池容量"""
        print("當前電池剩餘電量:{} kw.h".format(self.electric_quantity))

#使用子類
my_electric_car = ElectricCar1("NewWeek","FF91",2046,70)
my_electric_car.get_electric_quantity()


#重寫父類的方法--多態  同樣的方法 在不同的子類裏面有不同的表達方式
class ElectricCar2(Car):
    """模擬電動汽車"""
    #新傳入電池容量數據
    def __init__(self,brand,model,year,bettery_size):
        super().__init__(brand,model,year) #聲明繼承父類的屬性,此時子類自動繼承父類方法
        self.bettery_size = bettery_size #電池容量
        self.electric_quantity = bettery_size #電池剩餘容量
        self.electric2distance_ratio = 5 #電池距離換算係數
        self.remainder_range = self.electric_quantity*self.electric2distance_ratio   #剩餘可行駛旅程

    def get_main_infomation(self):    #重寫父類方法
        """獲取汽車主要信息"""
        print("品牌:{} 型號:{} 出廠年份:{} 續航裏航:{}公里"
              .format(self.brand,self.model,self.year,self.bettery_size*self.electric2distance_ratio))

#調用
my_electric_car = ElectricCar2("NextWeek","FF91",2046,70)
my_electric_car.get_main_infomation()

#用在類中的實例 把電池抽象成一個對象 邏輯更加清晰
class Bettery():
    """模擬電動汽車的電池"""
    def __init__(self,bettery_size = 70):
        self.bettery_size = bettery_size  # 電池容量
        self.electric_quantity = bettery_size  # 電池剩餘容量
        self.electric2distance_ratio = 5  # 電池距離換算係數
        self.remainder_range = self.electric_quantity * self.electric2distance_ratio  # 剩餘可行駛旅程

    def get_electric_quantity(self):
        """查看當前電池容量"""
        print("當前電池剩餘電量:{} kw.h".format(self.electric_quantity))

#重新構造電動汽車類 使模塊更加清晰
class ElectricCar4(Car):
    """模擬電動汽車"""

    def __init__(self,brand,model,year,bettery_size):
        """初始化電動汽車屬性"""
        super().__init__(brand,model,year) #聲明繼承父類的屬性,此時子類自動繼承父類方法
        self.bettery = Bettery(bettery_size) #創建電池實例,並且把這個屬性賦值給bettery

    def get_main_infomation(self):
        """獲取汽車主要信息"""
        print("品牌:{} 型號:{} 出廠年份:{} 續航裏航:{}公里"
              .format(self.brand, self.model, self.year, self.bettery.bettery_size * self.bettery.electric2distance_ratio))
#調用
my_electric_car = ElectricCar2("NextWeek","FF91",2046,70)
my_electric_car.get_main_infomation()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章