python学习

本文详细介绍了Python中类的定义、对象创建、属性(实例属性和类属性)、方法(实例方法、类方法和静态方法)的概念,并通过实例展示了类的继承和重写。此外,还提供了一个综合案例,涉及一个父类Student和两个子类LevelSt、PassSt,以及如何根据成绩计算等级和判断通过情况。
部署运行你感兴趣的模型镜像

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

class Rectangle: #定义一个类

    #1.定义初始化方法
    def __init__ (self,width,height):    #定义初始化方法,至少有一个参数self
        self.width = width               #给实例属性(形参)赋值,或者说定义参数变量属性
        self.height = height
        
    #2.定义其他功能函数
    def getArea(self):               #求面积方法,至少有一个参数
        S = self.width*self.height      #定义变量S存放面积值
        return S
    
    def getPerimeter(self):         #定义求周长方法
        C = 2*(self.width+self.height)
        return C

二.创建类对象(相当于函数的调用)
rect = Rectangle(5,3) #创建一个对象(具体值,实参)rect
print(‘矩形的宽:’,rect.width)
print(‘矩形的高:’,rect.height)
print(‘矩形的面积:’,rect.getArea()) #方法函数后面记得添加括号
print(“矩形的长度:”,rect.getPerimeter())
矩形的宽: 5
矩形的高: 3
矩形的面积: 15
矩形的长度: 16
三.类的属性(变量)
1.实例属性:在方法内部通过“self.属性变量名”定义和访问的变量(在外部通过’对象名.变量名’访问)
2.类属性:在所有方法之外定义的属性(变量)
四.类的方法(函数)
1.定义:与类相关的函数
2.类型:实例方法,类方法,静态方法
3.实例方法:至少包含一个对象参数,在内部通过"self.方法()"调用,在外部通过"对象名.方法()"调用。
五.类的继承和重写
1.继承:子类继承父类的方法 2.重写:子类可以重写子类的方法(方法名称相同) 3.实例如下:

#定义一个父类
class Person: #定义一个类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性别:{}'.format(self.name,self.age,self.sex))
        
        
#定义一个子类
class Student(Person):    #定义一个子类
    def __init__(self,name,age,sex,major):
        super().__init__(name,age,sex)     #用内置函数super()继承父类相关属性
        self.major=major                  #添加子类属性(重写属性)

    #定义实例方法
    def show(self):                 
        Person.show(self)              #用 Person.方法 继承父类方法
        print('专业:',self.major)     #添加子类方法(重写)
        
    
#创建对象(对象实体化)
a = Student(name='张三',age='20',sex='男',major='通信学院智联网')
a.working()      #子类有执行子类,父类有而子类没有则执行父类
a.show()

张三 正在工作!
姓名:张三
年龄:20
性别:男
专业: 通信学院智联网

六.综合案例分析
1.定义一个父类Student和两个子类LevelSt和PassSt,在父类中定义两个实例变量和5个方法,使子类继承父类的所有属性和方法, 并各自定义根据成绩计算等级和判断是否通过的方法,同时,将代码存储在student.py中

2.显示有LevelSt和PassSt类对象构成的学生成绩列表,以及所有学生名字和成绩,并按字典排列。

#student.py

#定义一个父类
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 getGrade(self):
        return self.grade
    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"
        
class PassSt(Student):
    def calcLevel(self):
        if self.grade>=60:
            return "通过" 
        else:
            return "不通过"
        
#定义列表函数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)
        listOfSt.append(s)
        is_continue = input("继续?(y/n):")
    return listOfSt

def display(listOfSt):
    print('\n姓名  \t   等级')
    listOfSt.sort(key=lambda x:x.getName())
    for each in listOfSt:
        each.show()
        
def main():
    listOfSt=list_St()
    display(listOfSt)
    
#调用主函数
if __name__ == "__main__":
    main()

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值