定义矩形。

一、类的定义(相当于多个函数集合的定义)

   例8.1定义一个矩形类,包含两个数据成员(属性参数):宽度和高度:该类提供两种方法(功能函数):求面积和周长

In [9]:

class Rectangle:    #定义一个类,类名为Rectangle
    def __init__(self,width,height):   #定义初始化方法(函数),三个参数(属性),至少有self一个参数(形参)
        self.width = width         #定义参数变量方法(给实例属性赋值)
        self.height = height
    def getArea(self):         #定义一个函数求面积
        S = self.width * self.height    #根据公示求面积值
        return S               #返回函数值
    def getPerimeter(self):     #定义一个函数功能求周长
        C = (self.width+self.height)*2   #根据公式求周长
        return C
    

二、创建类对象(相当于函数的调用)

In [10]:

rect = Rectangle(3,5) #创建Rectangle的对象(具体值即实参)rect,即将属性参数传递给实力参数,并将结果赋值给对象rect

In [11]:

print('此矩形的宽为:',rect.width)
print('此矩形的高为:',rect.height)
print('此矩形的面积:',rect.getArea())      #请注意函数后面要添加小括号
print('此矩形的周长:',rect.getPerimeter())
此矩形的宽为: 3
此矩形的高为: 5
此矩形的面积: 15
此矩形的周长: 16

三、类的属性(变量)

四、类的方法(函数)

1.定义:与类相关的函数 2、类型:实例方法,类方法,静态方法 3、实例方法:至少包含一个对象参数,在内部通过'self.方法()'调用,在外部通过'对象名.方法()'调用

五、类的继承与重写

1、继承:子类继承父类的方法 2、重写:子类可以重写父类的方法(方法名称相同) 3、示例如下:

In [22]:

class Person:
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex
    def working(self):
        print(self.name,'正在工作!')
    def show(self):
        print('姓名: {}\n年龄:{}\n性别:{}\n'.format(self.name,self.age,self.sex))

class Student(Person):    #定义子类Student继承父类Person
    def __init__(self,name,age,sex,major):
        super().__init__(name,age,sex)   #继承父亲(请用父类初始化方法),借用super()内置函数
        self.major = major
    def show(self):    #重写父类方法
        Person.show(self)   #继承父类
        print('专业: ' ,self.major) #添加额外行为

In [24]:

s = Student(name = '张三',age = '20',sex = '男',major = '通信学院智联网')  #给子类创建对象
s.working()
s.show()
张三 正在工作!
姓名: 张三
年龄:20
性别:男

专业:  通信学院智联网

六、综合案例(P177-P178)

1、定义一个父类Student和两个子类LevelSt和PassSt,在父类中定义2个实例变量和5个方法,使子类继承父类的所有属性和方法,并个自定义根成绩计算等级和判断是否通过的方法;同时,将代码存储在student.py文件中 2、显示由LevelSt和PassSt类对象构成的学生成绩列表,以及所有学生名字和成绩,并按字典排列

In [26]:

#创建文件student.py

#定义student父类
class Student:
    def __init__(self,name='',grade=0):
        self.name=name
        self.grade=grade
        def setName(self,name):
            self.name=name
        def setGrade(self,grade):
            self.grade=grade
        def getName(self):
            return self.name
        def show(self):
            print('%s\t  %s'%(self.name,self.calcLevel()))
class LevelSt(Student):
    def calcLevel(self):
        if self.grade>=90:
            return'A'
        elif self.grade>=80:
            return 'B'
        elif self.grade>=70:
            return 'C'
        elif self.grade>=60:
            return 'D'
        else:
            return 'E'
        
    #定义student子类(根据成绩判断是否通过)
    class PassSt(Student):
        def calcLevel(self):       #类的多态,和前面类的函数名称相同,但功能不同
            if self.grade>=60:
                return '通过'
            else:
                return '不通过'
        

In [ ]:

#定义列表函数list_St存放学生数据
def list_St():
    listOfSt=[]
    is_continue='Y'
    while is_continue in['Y','y','YES','yes']
    name=input('请输入名字:')
    grade=float(input('请输入成绩:'))
    choice=input('请选择(L or P):')
    if choice.upper()=='L':
        s=LevelSt(name.grade)
    else:
        s=PassSt(name,grade)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值