1. 类的组成
属性---成员变量
行为---成员方法
2. 类和成员方法的定义语法
# 定义一个带有成员方法的类
class Student:
name = None # 学生的姓名
def say_hi(self):
print(f"大家好呀,我是{self.name},欢迎大家多多关照")
def say_hi2(self, msg):
print(f"大家好,我是:{self.name},{msg}")
stu = Student()
stu.name = "周杰轮"
stu.say_hi2("哎哟不错哟")
stu2 = Student()
stu2.name = "林俊节"
stu2.say_hi2("小伙子我看好你")
3. self的作用
表示类对象本身的意思
只有通过self,成员方法才能访问类的成员变量
self出现在形参列表中,但是不占用参数位置
# 设计一个闹钟类
class Clock:
id = None # 序列化
price = None # 价格
def ring(self):
import winsound
winsound.Beep(2000, 3000)
# 构建2个闹钟对象并让其工作
clock1 = Clock()
clock1.id = "003032"
clock1.price = 19.99
print(f"闹钟ID:{clock1.id},价格:{clock1.price}")
# clock1.ring()
clock2 = Clock()
clock2.id = "003033"
clock2.price = 21.99
print(f"闹钟ID:{clock2.id},价格:{clock2.price}")
clock2.ring()
4. 构造方法
构造方法的作用:
构建类对象的时候会自动运行
构建类对象的时候传参会传递给构造方法,可以给成员变量赋值
注意:
class Student:
def __init__(self, name, age ,tel):
self.name = name
self.age = age
self.tel = tel
print("Student类创建了一个类对象")
stu = Student("周杰轮", 31, "18500006666")
print(stu.name)
print(stu.age)
print(stu.tel)
其他的魔术方法:
方法 | 功能 |
__init__ | 构造方法,可用于创建类对象的时候设置初始化行为 |
__str__ | 用于实现类对象转字符串的行为 |
__lt__ | 用于2个类对象进行小于或大于比较 |
__le__ | 用于2个类对象进行小于等于或大于等于比较 |
__eq__ | 用于2个类对象进行相等比较 |
class Student:
def __init__(self, name, age):
self.name = name # 学生姓名
self.age = age # 学生年龄
# __str__魔术方法
def __str__(self):
return f"Student类对象,name:{self.name}, age:{self.age}"
# __lt__魔术方法
def __lt__(self, other):
return self.age < other.age
# __le__魔术方法
def __le__(self, other):
return self.age <= other.age
# __eq__魔术方法
def __eq__(self, other):
return self.age == other.age
stu1 = Student("周杰轮", 31)
stu2 = Student("林俊节", 36)
print(stu1 == stu2)
注意:
__eq__方法:传入参数为other,另一个类对象返回值为True 或 False,不实现__eq__方法,对象之间可以比较,但是是比较内存地址,也即是:不同对象==比较一定是False结果。
__le__方法:传入参数为other,另一个类对象,返回值为True 或 False
__lt__方法:传入参数为other,另一个类对象,返回值为True 或 False。直接对2个对象进行比较是不可以的,但是在类中实现__lt__方法,即可同时完成:小于符号 和 大于符号 2种比较