python子类与父类_Python父类和子类关系/继承

#!/usr/bin/env python#-*- coding: utf-8 -*-

"""@File:继承_子类和父类的关系.py

@E-mail:364942727@qq.com

@Time:2020/4/4 12:39 上午

@Author:Nobita

@Version:1.0

@Desciption:父类和子类关系/继承"""

classCar():def __init__(self, make, model, year):

self.make=make

self.model=model

self.year=year

self.meter=0defget_car_description(self):

long_name= str(self.make) + ' ' + self.model + ' ' +self.yearreturnlong_namedef read_meter(self): #读取公里数的方法

print('This car have' + str(self.meter) + 'mi')def update_meter(self, mileage): #定义了一个修改公里数的方法,以后要修改公里数的时候,就不需要通过实例化去修改属性的值了

self.meter =mileagedef increment_meter(self, miles): #新增加的公里数,做加法运算

self.meter +=miles

my_car= Car('china', 'audi', '2010')print(my_car.model)print(my_car.get_car_description().title()) #title方法语法 -> str.title() //返回"标题化"的字符串,就是说所有单词都是以大写开始。

my_car.read_meter()

my_car.meter= 50 #通过实例化对属性的值做改变

my_car.read_meter()

my_car.update_meter(100) #通过之前定义的方法修改属性的值

my_car.read_meter()

my_car.increment_meter(200)

my_car.read_meter()classBattery():def __init__(self, battery_size=70):

self.battery_size=battery_sizedefdescribe_battery(self):print('这个车有' + str(self.battery_size) + '的电容量')defget_range(self):if self.battery_size == 70:

car_range= 240

elif self.battery_size <= 100 and self.battery_size >= 75:

car_range= 270msg= '这个车能跑{}公里'.format(car_range)returnmsgclass ElectricCar(Car): #创造ElectricCar(电动汽车)类

def __init__(self, make, model, year):

super().__init__(make, model, year)

self.battery=Battery()defdescribe_battery(self):print('电动汽车特有的属性是{}'.format(self.battery.battery_size))defread_meter(self):#父类当中的一个方法,对子类没有帮助;在子类当中,定义一个父类当中同名字的方法名,那么就会忽略父类的方法,取其精华。(重写父类的方法)

print('这个方法是重写父类的方法,会忽略父类当中的read_meter()方法')

my_ele_car= ElectricCar('usa', 'baoma', '2020')print(my_ele_car.get_car_description().title())

my_ele_car.read_meter()

my_ele_car.describe_battery()

my_ele_car.battery.describe_battery()print(my_ele_car.battery.battery_size)print(my_ele_car.battery.get_range())

my_ele_car.battery.battery_size= 80 #通过实例化对属性的值做改变

print(my_ele_car.battery.get_range())'''super()是一个特殊的函数,它让父类和子类可以关联起来。

这段代码让python调用ElectricCar的父类方法__init__(),让ElectricCar实例包含父类的所有属性。

Python中类的初始化方法是__init__(),因此父类、子类的初始化方法都是这个,

如果子类不实现__init__()这个函数,初始化时调用父类的初始化函数,

如果子类实现了这个函数,则要在这个函数里显式调用一下父类的__init__(),

这跟C++,jAVA不一样,他们是自动调用父类构造函数的。'''

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值