'''继承'''
'''定义并使用子类'''
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))
