我就廢話不多說了,還是直接看**吧!
class car():
"""一次模擬汽車的簡單嘗試"""
def __init__(self, make, model, year):
"""初始化描述汽車的屬性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_description_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
class electriccar(car):
"""電動汽車的獨特之處"""
def _init_(self, make, model, year):
"""電動汽車的獨特之處
初始化父類的屬性,再初始化電動汽車特有的屬性
"""super().__init__(make, model, year)
self.battery_size = 70
def describe_battery(self):
"""列印一條描述電瓶容量的訊息"""
prin"this car has a " + str(self.battery_size) + "-kwh battery.")
my_tesla = electriccar('tesla', 'model s', 2016)
print(my_tesla.get_description_name())
my_tesla.describe_battery()
執行結果:
traceback (most recent call last):
file "e:/python程式設計從入門到精通配套資料/self-taught python/electric_car.py", line 50, in
my_tesla.describe_battewww.cppcns.comry()
file "e:/python程式設計從入門到精通配套資料/self-taught python/electric_car.py", line 46, in describe_battery
print("this car has a " + str(self.程式設計客棧battery_size) + "-kwh battery.")
attributeerror: 'electriccar' object has no attribute 'battery_size'
補充知識:python中類的繼承,子類的方法的新增,子類的方法的覆蓋,子類的屬性的新增,及繼續父類的屬性
python如果我們想要繼承乙個類的方法,並且不改當前類,我們可以新建乙個子類,來繼續他的方法
1、類的繼承,我們先來建立乙個animal的父類,我們再來建立乙個dog的子類,dog子類繼承父類animal的方法,但是裡面沒有執行任何**,這時我們初始化一下dog子類為dog_1,記得也要傳入身高還有體重,不然會報錯我們可以發現dog_1繼承了animal裡面的屬性及方法。直接輸出一下及呼叫一下。
class animal():
def __init__(self, weight, high):
self.weight = weight
self.high = high
def shout(self):
print('wow'程式設計客棧)
class dog(animal):
pass
dog_1 = dog(20,40)
print(dog_1.high)
print(dog_1.weight)
dog_1.shout()
#輸出內容是
4020
wow2、子類的方法的新增,我們同樣可以在dog這個子類裡新增新的方法,比如我們新增乙個run的方法,再初始化一下dog_1,你會發現dog_1也會有run這個方法。
class dog(animal):
def run(self):
print('running')
dog_1 = dog(20,40)
dog_1.run()
#輸出結果是
running
3、子類的方法的覆蓋,我們再新增乙個子類cat,同樣繼承animal,但是你發現cat不是wow這樣叫的,所以我們要重新定義一下shout函式,把父類animal裡的函式覆蓋掉。這時我們初始化cat_1呼叫cat子類,記得要傳入體重和身高,不然會報錯,然後呼叫shout方法,你會發現輸出的內容是miao,因為子類裡的函式把父類裡的函式覆蓋掉了。
class cat(animal):
def shout(self):
print('miao')
cat_1 = cat(20, 40)
cat_1.shout()
#輸出結果是
miao
4、子類的屬性的新增,及繼續父類的屬性,如果這時我們要給cat加乙個屬性color,同樣用__init__來定義屬性,但是我們要用super()來繼承父類裡的weight和high,color 屬性的性,同樣用self.color賦值,這樣我們用cat_2初始化cat類的時候就要傳入三個引數,我們輸出乙個cat_2.color,可以看到是正常呼叫的。
class cat(animal):
def __init__(self, weight, high, color):
super().__inwhzxiaayzit__(weight, high)
self.color = color
def shout(self):
print('miao')
cat_2 = cat(20, 40, 'yellow')
print(cat_2.color)
#輸出結果是
yellow
本文標題: pycharm實現在子類中新增乙個父類沒有的屬性
本文位址:
Pycharm中實現單步跟蹤
在分析程式執行次序和功能時,我們經常需要對程式進行單步跟蹤除錯,下面就介紹下在pycharm中如何除錯 1 首先,如果使用過vs的朋友應該都知道如何使用單步跟蹤進行程式的除錯,在vs中不設定斷點也是可以單步執行的,但是在pycharm則不一樣 2 在pycharm中,進入程式的除錯可以點選工具欄中的...
iOS 如何實現在文字上新增拼音
一 介紹 最近專案有乙個需求,需要給朗誦的文字新增對應的拼音,而且要求使用原生的控制項實現。一開始聽到這個需求挺懵逼的,感覺有點難。後來,靜下來想一下,其實還是可以實現的,無非就是自定義了。下面,就來說說思想。二 思想 server端首先返回漢字和拼音一一對應的字串,我們根據需要分別擷取存入陣列。乙...
js實現在游標的位置 新增內容
sljfldjfldf 這裡是乙個可編輯層 jquery方法 點選我主要思路 當點選某個元素的時候,讓乙個輸入框,插入指定的值。1.當點選某個元素的時候,應該讓輸入框獲取焦點,因為只有獲得了焦點,才能在裡面輸入值 ie下 document.selection.createrange ff下 var ...