Python面向对象编程

张开发
2026/4/9 2:44:46 15 分钟阅读

分享文章

Python面向对象编程
一、面向对象编程的含义面向对象编程OOP指的是把现实世界的 “事物” 抽象成程序里的 “对象”用对象来组织代码、处理数据和逻辑的编程思想。生活中的所有事物都有特征和行为。面向对象编程就是把这种思维搬到代码里“特征”在代码里就是变量、属性而“行为”在代码里就是函数、方法。面向对象的编程可以让代码逻辑更清晰、信息更集中。面向对象编程有两个基本概念“类”是模版定义了这类东西有什么属性、能做什么而“对象”是根据类这个模版来创建的具体实例。面向对象编程中还有三个重要概念封装、继承、多态。封装指的是将类的内部细节打包藏起来只留接口给外面使用。继承表示类的从属关系子类可以继承父类的属性和方法减少代码冗余。多态指的是同一个方法在不同的子类里分别定义调用时会产生不同的执行结果。面向过程和面向对象各有不同使用场景。主流语言中C是纯面向过程的Java是纯面向对象的。二、创建类用关键词class可以创建类。class ClassName: # definition # ...三、定义属性类有一个特殊方法构造函数用于定义对象的属性必须命名为__init__(前后是两个下划线)括号里可以放任意个参数但第一个参数必须表示类自身一般叫self可以把属性的值绑定在实例对象上。在定义属性的时候前面加上self.才真正是定义了一个属性而不是一个普通变量。创建对象的时候用类名加上一个括号括号里写上参数__init__方法就会被调用并返回一个对象self参数不需要手动传入。class Student: def __init__(self,student_name,student_id): self.name student_name self.id student_id self.score {语文:0,数学:0,英语:0} stu1 Student(张三,1) print(f{stu1.name}\t{stu1.id}\t{stu1.score})四、定义方法接下来可以在类里面定义方法。定义方法和定义函数类似不同之处在于要把第一个参数设为self。比如写一个设置学生成绩的方法def grade(self,subject,score): if subject in self.score: self.score[subject] score以及再写一个打印所有成绩的方法def show_score(self): print(f学生{self.name},学号为{self.id},成绩如下) for subject in self.score: print(f{subject}:{self.score[subject]})然后调用一下这两个方法看看结果stu1 Student(张三,1) stu1.grade(语文,98) stu1.grade(数学,99) stu1.grade(英语,100) stu1.show_score()五、类继承定义子类的方法是在子类的类名后面加上括号括号里写父类的名字。创建子类实例的时候会优先调用子类的构造函数。在子类中可以使用用super()函数这个函数会返回父类调用父类的构造函数使子类继承父类的属性。调用类的方法时会先在子类里找有没有对应方法如果没有再往上一级在父类中找有没有同名方法。接下来我们用一个人力系统的具体场景练练手需求如下员工有两类正式员工RegularEmployee、实习生Trainee。两者都有属性姓名name和工号id。正式员工有属性月薪monthly_salary实习生有属性日薪daily_salary和每月工作天数work_days两者都有计算月薪 calculate_monthly_pay的方法但是计算过程不同。具体代码实现如下class Employee: def __init__(self,name,id): self.name name self.id id def show_info(self): print(f员工名字{self.name},工号{self.id}) class RegularEmployee(Employee): def __init__(self,name,id,monthly_salary): super().__init__(name,id) self.monthly_salary monthly_salary def calculate_monthly_pay(self): return self.monthly_salary class Trainee(Employee): def __init__(self,name,id,daily_salary,work_days): super().__init__(name,id) self.daily_salary daily_salary self.work_days work_days def calculate_monthly_pay(self): return self.daily_salary * self.work_days zhangsan RegularEmployee(张三,1000,6000) lisi Trainee(李四,1001,200,20) print(zhangsan.calculate_monthly_pay()) print(lisi.calculate_monthly_pay())END

更多文章