python在子类中添加新的属性_pycharm实现在子类中添加一个父类没有的属性
我就廢話不多說了,還是直接看代碼吧!
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):
"""打印一條指出汽車?yán)锍痰南?#34;""
print("This car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, mileage):
"""
將里程讀數(shù)設(shè)置為指定的值
禁止將里程表讀數(shù)往回調(diào)
"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self, miles):
"""將里程表讀數(shù)增加指定的量"""
self.odometer_reading += miles
class ElectricCar(Car):
"""電動(dòng)汽車的獨(dú)特之處"""
def _init_(self, make, model, year):
"""
電動(dòng)汽車的獨(dú)特之處
初始化父類的屬性,再初始化電動(dòng)汽車特有的屬性
"""
super().__init__(make, model, year)
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_description_name())
my_tesla.describe_battery()
運(yùn)行結(jié)果:
Traceback (most recent call last):
File "E:/Python編程從入門到精通配套資料/Self-taught Python/electric_car.py", line 50, in
my_tesla.describe_battery()
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'
補(bǔ)充知識(shí):python中類的繼承,子類的方法的添加,子類的方法的覆蓋,子類的屬性的添加,及繼續(xù)父類的屬性
python如果我們想要繼承一個(gè)類的方法,并且不改當(dāng)前類,我們可以新建一個(gè)子類,來繼續(xù)他的方法
1、類的繼承,我們先來創(chuàng)建一個(gè)Animal的父類,我們?cè)賮韯?chuàng)建一個(gè)dog的子類,dog子類繼承父類Animal的方法,但是里面沒有執(zhí)行任何代碼,這時(shí)我們初始化一下dog子類為dog_1,記得也要傳入身高還有體重,不然會(huì)報(bào)錯(cuò)我們可以發(fā)現(xiàn)dog_1繼承了Animal里面的屬性及方法。直接輸出一下及調(diào)用一下。
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()
#輸出內(nèi)容是
40
20
wow
2、子類的方法的添加,我們同樣可以在dog這個(gè)子類里添加新的方法,比如我們添加一個(gè)run的方法,再初始化一下dog_1,你會(huì)發(fā)現(xiàn)dog_1也會(huì)有run這個(gè)方法。
class Dog(Animal):
def run(self):
print('running')
dog_1 = Dog(20,40)
dog_1.run()
#輸出結(jié)果是
running
3、子類的方法的覆蓋,我們?cè)偬砑右粋€(gè)子類Cat,同樣繼承Animal,但是你發(fā)現(xiàn)Cat不是wow這樣叫的,所以我們要重新定義一下shout函數(shù),把父類Animal里的函數(shù)覆蓋掉。這時(shí)我們初始化cat_1調(diào)用Cat子類,記得要傳入體重和身高,不然會(huì)報(bào)錯(cuò),然后調(diào)用shout方法,你會(huì)發(fā)現(xiàn)輸出的內(nèi)容是miao,因?yàn)樽宇惱锏暮瘮?shù)把父類里的函數(shù)覆蓋掉了。
class Cat(Animal):
def shout(self):
print('miao')
cat_1 = Cat(20, 40)
cat_1.shout()
#輸出結(jié)果是
miao
4、子類的屬性的添加,及繼續(xù)父類的屬性,如果這時(shí)我們要給Cat加一個(gè)屬性color,同樣用__init__來定義屬性,但是我們要用super()來繼承父類里的weight和high,color 屬性的性,同樣用self.color賦值,這樣我們用cat_2初始化Cat類的時(shí)候就要傳入三個(gè)參數(shù),我們輸出一個(gè)cat_2.color,可以看到是正常調(diào)用的。
class Cat(Animal):
def __init__(self, weight, high, color):
super().__init__(weight, high)
self.color = color
def shout(self):
print('miao')
cat_2 = Cat(20, 40, 'yellow')
print(cat_2.color)
#輸出結(jié)果是
yellow
類的繼承就講到這里,大家有問題歡迎私聊我
以上這篇pycharm實(shí)現(xiàn)在子類中添加一個(gè)父類沒有的屬性就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持python博客。
總結(jié)
以上是生活随笔為你收集整理的python在子类中添加新的属性_pycharm实现在子类中添加一个父类没有的属性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ifix如何设画面大小_ifix5.1环
- 下一篇: typescript设置默认值_Type