对象
初识对象
存储数据有多种方式,如列表、字典等等,如果不统一会显得很乱,对象可以解决这个问题
例如制作这样一张记录表
信息 | 学生登记表 |
---|---|
姓名 | NONE |
性别 | NONE |
国籍 | NONE |
籍贯 | NONE |
年龄 | NONE |
# 设计一个类(设计一张表)
class Student:
name = None # 记录学生姓名
gender = None # 记录学生性别
nationality = None # 记录学生国籍
native_place = None # 记录学生籍贯
age = None # 记录学生年龄
# 创建一个对象(打印一张登记表)
stu_1 = Student()
# 对象属性进行赋值(填写表单)
stu_1.name = "周杰轮"
stu_1.gender = "男"
stu_1.nationality = "中国"
stu_1.native_place = "山东省"
stu_1.age = 18
# 获取记录信息
print(stu_1.name,end=" ")
print(stu_1.gender,end=" ")
print(stu_1.nationality,end=" ")
print(stu_1.native_place,end=" ")
print(stu_1.age)
# 由此数据成功记录子在此对象中
定义类和创建对象
"""
class 类名称:
类属性 定义类中的变量(成员变量)
类行为 定义类中的函数(成员方法)
"""
# 创建出一个具体对象
# 对象 = 类名称()
类的成员方法
class traveller:
name = None
age = None
# 记录行为,类中的函数叫做方法
# 定义方法:def 方法名(self,形参1,形参2,...)
# self标示类对象自身的意思,写上才能访问类成员,self会被python自动传入
def say_hi(self):
print(f"你好,我是{self.name},初次来到这个世界,请多多指教")
tra = traveller()
# 通过点使用成员变量和成员方法
tra.name = "风之旅人"
tra.say_hi()
tra2 = traveller()
tra2.name ="澹台诗吟"
tra2.say_hi()
构造方法
方法:__init__() 称之为构造方法
可以实现:
创建对象(构造类)的时候*自动执行*
创建对象(构造类)的时候会把参数自动递给__init__() 方法使用
把赋的值都传给定义好的成员变量
class traveller:
name:None
age:None
time:None # 后面定义了则这里可以省略
def __init__(self,name,age,time):
self.name = name
self.age = age
self.time = time # 接收参数且赋值,若没定义外加定义
stu = traveller("艾希","24","2023年4月6日14:24:22")# 创建对象
# 执行时构造方法会自动执行
魔术方法
python类内置的方法,如构造方法
这些内置的类方法有各自的特殊功能,称之为魔术方法
_str _字符串方法
class student:
def __init__(self,name,age):
self.name=name
self.age=age
stu=student("索尔",3927)
print(stu)
print(str(stu)) #直接输出只能得到地址
定义字符串方法
class student:
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
return f"student类对象,name:{self.name},age{self.age}"
stu=student("索尔",3927)
print(stu)
print(str(stu))
_ lt _方法
小于符号比较方法
class student:
def __init__(self,name,age):
self.name=name
self.age=age
# 定义比__lt__比较方法
def __lt__(self, other):
return self.age < other.age
stu1 = student("索尔",3927)
stu2 = student("艾希",25)
print(stu1 > stu2)
print(stu1 < stu2)
_ le _比较方法
可用于>= 和 <= 两种运算符
逻辑和 _ lt _一样
_ eq _方法
用于== 运算符,逻辑和上两种一致
总结
方法 | 功能 |
---|---|
_ init _ | 构造方法,可用于创建类对象的时候设置初始化行为 |
_ str _ | 用于实现类对象转字符串的行为 |
_ lt _ | 用于2个类对象进行小于或大于比较 |
_ le _ | 用于2个类对象进行小于等于或大于等于比较 |
_ eq _ | 用于2个类对象进行相等比较 |
封装
一种将现实世界中的事物封装到程序中的思想
私有成员
私有成员变量:变量名以_ _ 开头(两个下划线)
私有成员方法:方法名以_ _开头
私有方法无法直接被累对象使用,私有变量无法赋值,也无法获取值
无法被类对象使用,但可以被其他成员使用