1.使用类和实例
#创建类计算圆的面积和周长
class Yuan(): #创建类Yuan一般类名都采用单词首字母大写方式命名,而不使用下划线
def __init__(self,r): #__init__中必须包含形参self,且在其他形参前面
self.r=r #获取存储在形参r中的值,以self为前缀的变量可供类中所有方法使用,
# 还可以通过类的任何实例访问,像这样可通过实例访问的变量称为属性。
def area(self): #()里需要有self,不然接收不到值
area=3.14*self.r**2
print("半径为:"+str(self.r)+"的圆的面积="+str(area))
def zc(self):
zc=2*3.14*self.r
print("半径为:"+str(self.r)+"的圆的周长="+zc.__str__())
my_yuan=Yuan(3) #这是一个实例
print("现在计算半径为:"+str(my_yuan.r)+" 的圆的面积和周长:") #调用r,r是属性
my_yuan.area() #调用area函数计算面积,area是方法
my_yuan.zc() #调用zc函数计算周长,zc是方法
#可创建多个实例-----------------------------------
my_yuan2=Yuan(4)
my_yuan2.area()
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
现在计算半径为:3 的圆的面积和周长:
半径为:3的圆的面积=28.26
半径为:3的圆的周长=18.84
半径为:4的圆的面积=50.24
2.设置类中属性的默认值以及修改类中的属性值,
继承与重写父类方法
#设置类中属性的默认值以及修改类中的属性值:
class Restaurant():
def __init__(self,name): #设置默认值的不需要形参,因为它并不需要获取实参
self.name=name #这里只是随便设置一个形参name
self.shuliang=0 #给属性设置默认值
print("初始化人数为:"+str(self.shuliang))
def update(self,shuliang): #设置形参shulaing,用来接收调用update时的实参
self.shuliang +=shuliang #self.shuliang=self.shuliang+接收到的shuliang
print("修改后的人数为:"+str(self.shuliang))
res=Restaurant('桥头烧烤店') #这里只是随便输入一个实参而已,并没有调用
res.update(5) #调用方法update,并传递更新值5
print("现在输出res.shuliang的值:"+str(res.shuliang))
#-------------------------------------------------------------
#继承与重写父类方法:
class Kfc(Restaurant): #创建KFC类,继承Restaurant类,括号中表示父类
def __init__(self,name):
"""初始化父类的属性"""
super().__init__(name) #父类(超类),super()函数让Python将父类和子类关联起来
#super()后面的init()里面不需要self
def update(self): #和父类一样的函数名,在子类中会执行子类定义的方法,而忽略父类的update()方法
print("\n这里是对父类的方法重写!!")
kfc=Kfc('肯德基')
kfc.update() #调用Kfc中的update()方法
#输出>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
初始化定义人数:0
修改后的人数为:5
现在输出res.shuliang的值:5
初始化定义人数:0 #这里是因为继承了父类,所以输出父类中的语句
这里是对父类的方法重写!! #子类调用重写的方法会执行子类定义的方法而忽略父类中的方法
3.导入类
继承的时候不可能把那么多的父类代码写在同一个文件内,所以可以使用导入来引入父类
导入类和上一章导入函数差不多的操作:
#从模块中导入类
from res import Resturant #Resturant是类名,res是文件名(res.py)
#从模块中导入多个类
from res import Resturant,Resturant1,lei2 #导入res中的 Resturant类,Resturant1类,lei2类,
#导入模块中的所有类
from module_name import*