'''继承''' '''定义并使用子类''' class Car(): """汽车之家""" def __init__(self, manufacturer, model, year):#为实例化提供形参信息 self.manufacturer=manufacturer self.model=model self.year=year self.odometer_reading=0 def get_descriptive_name(self):#返回信息打印 long_name=str(self.year)+" "+self.manufacturer+" "+self.model return long_name.title() def update_obometer(self, mileage):#里程增加 if mileage>=self.odometer_reading: self.odometer_reading=mileage # print("这是一个合理的数据!",str(self.odometer_reading)+"千米!") else: print("这是一个不合理的数据!") def increament_odometer(self,miles):#智能加曲 self.odometer_reading+=miles def read_obometer(self):#打印里程数 print("这是一辆新车,目前仪表显示行程为" + str(self.odometer_reading) + "千米!") class Bmw(Car): '''这是一个子类,基类是Car''' def __init__(self,manufacturer, model, year): super().__init__(manufacturer, model, year)#这个是一个特殊的函数,它的功能是将父类和子类连接关联起来 # self.battery_size="6缸 3.0T" self.Motor=Motor()#自动创建该motor实例,虽然没有指定参数,但是下面的函数指定了 # def motor(self): # print("发动机是"+str(self.battery_size)) class Motor(Bmw): def __init__(self,Motor_size=60): self.Motor_size=Motor_size def describe_motor(self): print("这款车的发动机参数是"+str(self.Motor_size)+"6缸,3.0T涡轮增压,225KW.") my_tesla=Bmw("宝马","535Li","2017款") print(my_tesla.get_descriptive_name()) my_tesla.update_obometer(0) my_tesla.read_obometer() # my_tesla.motor() print("*******************************") my_tesla.increament_odometer(10) my_tesla.read_obometer() my_tesla.Motor.describe_motor()
'''多重继承''' class Wai: def __init__(self,x=0,y=0,color="black"): self.x=x self.y=y self.color=color def haijun(self,x,y): self.x=x self.y=y print("发射鱼雷.......") self.info() def info(self): print("定位目标:(%d,%d)"%(self.x,self.y)) def gongji(self): print("导弹发射!!!") class FlyWai(Wai): def gongji(self): print("飞船拦截!!!") def fly(self,x,y): print("火箭军........") self.x=x self.y=y self.info() flyWai=FlyWai(color="red") flyWai.haijun(100,200) flyWai.fly(12,15) flyWai.gongji()
总结
这些代码是我前段时间自己敲打出来的,知识点也比较全面,可以从一步一步的去按照这个节奏,自己写一写,这样有利于自己的认识和巩固。希望可以对大家有帮助,最后如果你们在实际运用中,有什么问题,欢迎留言私信我哟,尽我所能的帮助你!哈哈哈,我们下期文章再会!
满满的干货,都是小王在网络大数据的平台,细细挑选的,亲测试用,如果你不知道如何选择书籍,就快来领取福利吧!
前面我们介绍了关于Python面向对象的基础知识和概念,今天我们来了解一下关于它的高级用法与进阶。
模块架构,早在之前的文章我们就已经提到过,但是在这里我又不得不提起,因为它是面向对象的一个接口,我们只有熟练这些模块的使用,才能对后面的一些知识点得心应手。
'''模块架构''' import math from math import sqrt import math as shuxue a=math.sqrt(16) #直接用模块加函数 b=sqrt(4) #用函数 c=shuxue.sqrt(9) #用自命名的模块加函数 print(a,"\t",b,"\t",c) if __name__=="__main__": print(a) else: print(c)
"""使用包"""
'''例如上述实验方法,我们在导入包的时候,可以有不同的方法,因为导入不同,所以调用也不同
所以,我们在调用的时候必须要看后面的是什么,比如import requests 这个时候我们要使用这个里面的功能
必须以 requests.get()方法,或者from requests import get方法,还有一系列的,所以我们在自己开发试验的时候必须
熟悉自己的方法,避免混淆
'''
'''导入类'''
'''类的导入与模块相似'''
'''迭代器''' '''迭代器的使用例如for循环语句遍历迭代器''' class Use: def __init__(self,x=2,max=50): self.__mul,self.__x=x,x #初始化属性,X的初始值是2 self.__max=max def __iter__(self): return self def __next__(self): if self.__x and self.__x !=1: self.__mul *=self.__max if self.__mul <=self.__max: return self.__mul else: raise StopIteration if __name__=="__main__": my=Use() for i in my: print("迭代数据元素为:",i)
'''使用内置迭代器方法iter()''' class Counter: def __init__(self,x=0): self.x=x counter=Counter() def used_iter(): counter.x+=2 return counter.x for i in iter(used_iter,52): #iter该函数用于函数,当最后一个参数迭代后返回和自己定义的相等的时候,程序结束,例如12 print(i) from itertools import * def height_class(h): if h > 180: return 'tall' elif h < 180: return "short" else: return "middle" friends=[191,158,159,169,148,163,175,156,123,149,256,596,648,789,156,3589,180] friends=sorted(friends,key=height_class) for m,n in groupby(friends,key=height_class):#使用groupby()遍历数据 print(m) print(list(n))







