python(18)类(2)
写在前面的话:码字不易,点个赞关注一下作者再走吧[呲牙]
==================================1.继承
编写类时,并非总是要从空白开始,如果要编写的类时一个现成类的特殊版本,可使用继承
一个类继承另一个类时,将自动获得另一个类的所有属性和方法;原有的类称为父类,新类称为子类。
子类继承了父类的所有属性和方法,同时还可以定义自己的属性和方法 ###1.子类的方法__init__() #模拟电动汽车,电动汽车是一种特殊的汽车,因此可以在前面创建的Car()类基础上创建新的ElectricCar,这样就只需为电动汽车特有的属性和行为编写代码 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 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 not roll back an odometer") def increment_odometer(self, miles): self.odometer_reading += miles class ElectricCar(Car):#创建一个子类,继承父类 #电动车的独特之处 def __init__(self, make, model, year):#接受父类的信息 #初始化父类的属性,super()函数帮助关联父类和子类 super(). __init__(make, model, year) my_tesla = ElectricCar("tesla", "model s", 2016) print(my_tesla.get_descriptive_name()) 2016 tesla model s =============================================== ###2.给子类定义属性和方法 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 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 not roll back an odometer") def increment_odometer(self, miles): self.odometer_reading += miles class ElectricCar(Car):#创建一个子类,继承父类 #电动车的独特之处 def __init__(self, make, model, year):#接受父类的信息 #初始化父类的属性,super()函数帮助关联父类和子类 super(). __init__(make, model, year) self.battery_size = 70#给子类定义属性 def describe_battery(self):#给子类定义方法 #打印一条描述电池容量的消息 print("this car has " + str(self.battery_size) + "-kwh battery") my_tesla = ElectricCar("tesla", "model s", 2016) print(my_tesla.get_descriptive_name()) my_tesla.describe_battery() 2016 tesla model s this car has 70-kwh battery ==================================================== ###3.重写父类的方法 #对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其重写。为此,可在子类中定义一个与要重写的父类方法同名,python将不会考虑父类方法,只关注子类中定义的相应方法 #假设Car类有一个名为fill_gas_tank()的方法,对电动车来说毫无意义,需要重新改写 class ElectricCar(Car): --snip-- def fill_gas_tank(): #电动汽车没有油箱 print("this car does not need a gas tank") ================================================ ###4.将实例用作属性,将类的一部分作为一个独立的类提取出来 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 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 not roll back an odometer") def increment_odometer(self, miles): self.odometer_reading += miles class Battery():#定义一个名为Battery的新类 #模拟电动车的简单尝试 def __init__(self, battery_size = 70): #初始化电瓶属性 self.battery_size = battery_size def describe_battery(self):#给子类定义方法 #打印一条描述电池容量的消息 print("this car has " + str(self.battery_size) + "-kwh battery") class ElectricCar(Car):#创建一个子类,继承父类 #电动车的独特之处 def __init__(self, make, model, year):#接受父类的信息 #初始化父类的属性,super()函数帮助关联父类和子类 super(). __init__(make, model, year) self.battery = Battery()#添加一个名为self.battery的属性,并将Battery()实例存储在属性self.battery中 my_tesla = ElectricCar("tesla", "model s", 2016) print(my_tesla.get_descriptive_name()) my_tesla.battery.describe_battery() 2016 tesla model s this car has 70-kwh battery 2.导入类
python允许将类存储在模块中,然后在主程序中导入所需的模块 ###1.导入单个类 #创建一个Car()类,存储在car.py的模块中 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 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 not roll back an odometer") def increment_odometer(self, miles): self.odometer_reading += miles 2016 audi a4 this car has 23 miles on it ==================================== ###2.在一个模块中存储多个类 #新建一个Car()类,存储在car.py的模块中 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 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 not roll back an odometer") def increment_odometer(self, miles): self.odometer_reading += miles class Battery():#定义一个名为Battery的新类 #模拟电动车的简单尝试 def __init__(self, battery_size = 70): #初始化电瓶属性 self.battery_size = battery_size def describe_battery(self):#给子类定义方法 #打印一条描述电池容量的消息 print("this car has " + str(self.battery_size) + "-kwh battery") class ElectricCar(Car):#创建一个子类,继承父类 #电动车的独特之处 def __init__(self, make, model, year):#接受父类的信息 #初始化父类的属性,super()函数帮助关联父类和子类 super(). __init__(make, model, year) self.battery = Battery()#添加一个名为self.battery的属性,并将Battery()实例存储在属性self.battery中 2016 tesla model s this car has 70-kwh battery ========================================== ###3.从一个模块中导入多个类 from car import Car, ElectricCar my_beetle = Car("bmw", "q7", 2016) print(my_beetle.get_descriptive_name()) my_tesla = ElectricCar("tesla", "model s", 2016) print(my_tesla.get_descriptive_name()) 2016 bmw q7 2016 tesla model s ============================================= ###4.导入整个模块 import car my_beetle = Car("bmw", "q7", 2016) print(my_beetle.get_descriptive_name()) my_tesla = ElectricCar("tesla", "model s", 2016) print(my_tesla.get_descriptive_name()) 2016 bmw q7 2016 tesla model s ============================================ ###5.导入模块中的所有类 from module_name import * ====================================== ###6.在一个模块中导入另一个模块 #将Car类存储在car.py文件中,将 ElectricCar和Battery存储在一个叫electric_car.py的文件中 #如何创建car.py文件 class Car(): --snip-- #如何创建electric_car.py文件 from car import Car#将Car类导入到该模块中,因为ElectricCar类需要访问其父类Car class Battery(): --snip-- class ElectricCar(Car); --snip-- #新建一个my_cars.py的文件 from car import Car from electric_car import ElectricCar my_beetle = Car("bmw", "q7", 2016) print(my_beetle.get_descriptive_name()) my_tesla = ElectricCar("tesla", "model s", 2016) print(my_tesla.get_descriptive_name()) 2016 bmw q7 2016 tesla model s
一部手机居然可以同时连接2个Wifi,教程来了用了这么多年手机,居然不知道我们的智能手机可以同时连接两个WiFi信号,让手机的网络性能更好,网速更快。随着人们生活条件的不断提高,绝大多数家庭都已经安装了宽带并且提供了24小时的
波导,手机中的战斗机记忆中的经典台词波导,手机中的战斗机。我今年53岁,我的第一部手机是2004年11月份购买的,我买的是波导手机。为什么买波导手机呢?因为那时候的电视屏幕上铺天盖地扑面而来的都是波导
常青股份2021年实现营收30。09亿元拟10派0。59元中证网讯(王珞)常青股份(603768)4月27日晚间发布2021年年报,2021年公司完成营业收入300898。90万元,同比上升30。99,实现归属于上市公司股东净利润5940
电视还能这样子!康佳锤子OS联手重新定义电视2016年我国电视开机率是70,但到了2021年,这组数据已经变成了27。7,悬殊之大让人乍舌。国内市场调查机构奥维云网数据显示2021年国内彩电零售总量跌破4000万台大关,为3
小米加入CCC董事会,推进数字车钥匙发展与应用小米集团(01810。HK)宣布正式加入了CarConnectivityConsortium(简称CCC)董事会。CCC是一个致力于制定智能手机到汽车连接解决方案标准的全球跨行业组
福建省消委会约谈7家电商平台并督促整改东南网4月28日讯(福建日报记者林智岚)昨日,记者从省消委会获悉,截至4月20日,苏宁易购淘特美团优选诺言得物东莞象贝拼多多等7家电子商务平台经营者,就多项侵害消费者合法权益的行为
vivoX80Pro和iPhone13Pro,哪个更值得入手?还用说,有钱的话选iPhone13Pro它不香吗?就说在6000元以上价位段,iPhone的销量占了市场份额的80,消费者用真金白银投票出来的结果不用质疑的。虽然在一些配置iPho
iPhoneSE3又降价了,这可能是苹果近几年降价最猛的手机了iPhoneSE3大概是苹果近几年降价最猛的手机了,一经上市就在各大平台迎来大降价,随后价格有略微回升。而经过一段时间之后,现在iPhoneSE3又双叒叕降价了,该机目前在拼多多平
再见!卡顿的安卓手机安卓系统最大的问题,就是系统卡顿。一部手机,尤其是被用过一年之后,往往会变得越来越卡,卡到APP半天打不开卡到好不容易打开APP,操作两下又死机了卡到要经常重启才能缓解卡顿卡到手机
预售价高达40万,智己L7是要卖给谁?作为造车新势力之一的智己L7,目前在市场上可以说是门可罗雀。这个由上汽集团张江高科和阿里巴巴集团联合打造的高端智能纯电动汽车品牌,发布一年多的时间,一直没有实车量产交付,没有金刚钻
马云和阿里被起诉了?马云的确可以算作一个传奇。凭借阿里一举改变了国人的消费方式与消费观念,一时间成了无数企业家纷纷效仿的标杆。阿里入围世界500强,马云三次蝉联中国首富,一时间站到了互联网时代的顶端。