python基础——面向对象

一、类的基本使用

1.定义
class 类名称
	类的属性(即定义在类中的变量)
	类的行为(即定义在类中的函数)
2.使用 对象=类名称

class Student:
	name = None
	age = None
	def say_hi(self):
		print(self.name)

二、成员方法

定义时需要写slef,调用时不需要
def 方法名(self,参数1,参数2,...):   //self表示类自身
	方法体

三、构造方法

__init__()方法,称之为构造方法
def __init__(self,name,age,tel):
	self.name = name
	self.age = age
	self.tel = tel

四、类内置方法

  • init 构造方法,是Python类内置的方法之一
  • 这些内置的类方法,各自有各自特殊的功能,这些内置方法我们称之为:魔术方法。
  • 一般形式_xxx_
  • 常见魔术方法:
    在这里插入图片描述
  • _str_
    一般print(student)打印的是student的内存地址,通过__str__控制将student变成字符串打印的东西。像java中的toString()
def __str__(self):
	return f"Student类对象:name:{self.name}"
  • _lt_(小于写了自动能判别大于,即小于和大于写一个,小于等于和大于等于写一个)
  • 同理还有_le_,_gt_,_ge_
    通过改造两个对象就能比大小
def __lt__(self,other):
	return self.age < other.age

五、封装

私有成员变量:变量名以__开头(两个下划线)
私有成员方法:方法名以__开头(两个下划线)

__name = "BUAA"

六 、继承

1、单继承

class 类名(父类名):
	类内容体

在这里插入图片描述

2、多继承

class 类名(父类1,父类2,父类3,...):
	类内容体
	//若这个类没有其他功能,内容体为空,此时需要写pass占位
  • 多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右)为优先级。即:先继承的保留,后继承的被覆盖

3、复写

直接重写即可。
在这里插入图片描述

  • 一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员
  • 如果需要使用被复写的父类的成员,需要特殊的调用方式
1.调用父类成员
使用成员变量:父类名.成员变量
使用成员方法:父类名.成员方法(self)
2.使用super()调用父类成员
使用成员变量:super().成员变量
使用成员方法:super().成员方法()

在这里插入图片描述

七、类型注解

1、概念

  • Python在3.5版本的时候引入了类型注解以方便静态类型检查工具,IDE等第三方工具。
  • 类型注解:在代码中涉及数据交互的地方提供数据类型的注解(显式的说明)
  • 主要功能:
    • 帮助第三方IDE工具(如PyCharm)对码进行类型推断,协助做代码提示
    • 帮助开发者自身对变量进行类型注释
  • 支持:
    • 变量的类型注解
    • 函数(方法)形参列表和返回值的类型注解
      在这里插入图片描述

2、方式1:变量:类型

1.变量设置类型注解
	var_t:int =10
	var_2:float = 3.1415926
	var_3:bool = True
	var 4:str ="itheima'
2.类对象类型注解
	class Student:
		pass
	stu: Student = Student()
3.基础容器类型注解
	my_list:ist=[1,2,3]
	my_tuple:tuple=(1,2,3)
	my_set:set={1,2,3}
	my_dict: dict={"itheima":666}
	my_str: str= "itheima"
4.容器类型详细注解
元组类型设置类型详细注解,需要将每一个元素都标记出来
字典类型设置类型详细注解,需要两个类型,第一个是key第二个是value
	my_list:1ist[int]=[1,2,3]
	my_tuple: tuple[str,int, bool]=("itheima",666,True)
	my_set:set[int]={l,2,3}
	my_dict: dict[str,int]={"itheima":666}
5.函数(方法)类型注解——形参注解
def 函数名(形参名:类型,形参名:类型,....)
5.函数(方法)类型注解——返回值注解
def 函数名(形参名:类型,形参名:类型,....)->返回值类型
6.union混合类型
my_list:list[union[str, int]]=[1,2,"itheima", "itcast"]
my_dict: dict[str, union[str, int]]= {"name":"周杰轮","age": 31}
def func(data: unionlint,str])-> union[int, str]:
	pass

3、方式2:# type:类型

var_1 = random.randint(1,10)		# type: int
var_2 = json.loads(data)			# type: dict[str, int]
var_3 = func()						# type: student

4、注意点

  • 类型注解只是提示作用,在编译中并不会看,因此不遵守是不会报错的

八、多态

形参接收父类对象,实际是传入父类的子类对象进行工作。
在这里插入图片描述

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍如何使用 Python 制作一个简易的学生信息管理系统。这个系统将使用面向对象编程的方式实现,可以方便地添加、删除和修改学生信息。 首先,我们需要定义一个 `Student` 类,用来表示学生信息。每个学生都有姓名、学号、年龄等基本信息,可以使用类的属性来表示: ```python class Student: def __init__(self, name, student_id, age): self.name = name self.student_id = student_id self.age = age ``` 在 `__init__` 方法中,我们定义了三个属性,分别对应学生的姓名、学号和年龄。接下来,我们需要添加一些方法,来实现学生信息的添加、删除和修改: ```python class Student: def __init__(self, name, student_id, age): self.name = name self.student_id = student_id self.age = age def get_name(self): return self.name def set_name(self, name): self.name = name def get_student_id(self): return self.student_id def set_student_id(self, student_id): self.student_id = student_id def get_age(self): return self.age def set_age(self, age): self.age = age ``` 在上面的代码中,我们定义了六个方法,分别对应获取和设置学生的姓名、学号和年龄。这些方法可以方便地对学生信息进行修改。 接下来,我们可以创建一个 `StudentManager` 类,用来管理所有的学生信息。这个类包含了一个学生列表,可以添加、删除和修改学生信息: ```python class StudentManager: def __init__(self): self.students = [] def add_student(self, student): self.students.append(student) def remove_student(self, student): self.students.remove(student) def get_all_students(self): return self.students def search_student_by_id(self, student_id): for student in self.students: if student.get_student_id() == student_id: return student return None ``` 在上面的代码中,我们定义了四个方法,分别对应添加、删除、获取所有学生和根据学号查找学生。这些方法可以方便地对学生信息进行管理。 现在,我们可以创建一个 `main` 函数,来实现学生信息管理系统的基本功能: ```python def main(): manager = StudentManager() # 添加学生 student1 = Student('张三', '001', 18) manager.add_student(student1) student2 = Student('李四', '002', 19) manager.add_student(student2) student3 = Student('王五', '003', 20) manager.add_student(student3) # 查找学生 s = manager.search_student_by_id('001') print(s.get_name(), s.get_student_id(), s.get_age()) # 修改学生信息 s.set_name('赵六') s.set_age(21) # 删除学生 manager.remove_student(student3) # 打印所有学生信息 students = manager.get_all_students() for student in students: print(student.get_name(), student.get_student_id(), student.get_age()) ``` 在上面的代码中,我们首先创建了一个 `StudentManager` 对象,并添加了三个学生。然后,我们使用 `search_student_by_id` 方法查找学号为 '001' 的学生,并打印出其姓名、学号和年龄。接着,我们使用 `set_name` 和 `set_age` 方法修改了该学生的姓名和年龄。然后,我们使用 `remove_student` 方法删除了一个学生。最后,我们使用 `get_all_students` 方法获取所有学生信息,并打印出来。 这样,一个简易的学生信息管理系统就完成了。您可以根据自己的需求,继续添加其他功能,如文件读写、GUI 界面等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值