Python中类的成员方法和构造方法

本文介绍了Python中类的概念,包括类的属性(成员变量)和行为(成员方法)。通过实例展示了如何创建类对象,以及如何使用构造方法`__init__`初始化对象属性。此外,还探讨了魔术方法如`__str__`、`__lt__`、`__le__`和`__eq__`在自定义类行为中的应用,例如控制对象转化为字符串、比较操作等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类的使用方法:
在这里插入图片描述

  • class是关键字,表示要定义类了
  • 类的属性,即定义在类中的变量(成员变量)
  • 类的行为,即定义在类中的函数(成员方法)

创建类对象的语法:
在这里插入图片描述
在这里插入图片描述

成员变量和成员方法

那么,什么是类的行为(方法)呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看出,类中:

  • 不仅可以定义属性用来记录数据
  • 也可以定义函数,用来记录行为

其中:

  • 类中定义的属性(变量),我们称之为:成员变量
  • 类中定义的行为(函数),我们称之为:成员方法

类和对象

# 设计一个闹钟类
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()

构造方法

Python类可以使用:__init__方法,称之为构造方法。
可以实现:
在创建类对象(构造类)的时候,会自动执行。
在创建类对象(构造类)的时候,将传入参数自动传递给__init__方法使用。
在这里插入图片描述
构建类时传入的参数会自动提供给__init__方法
构建类的时候__init__方法会自动执行

# 构造方法的名称:__init__
class Student:
    name = None
    age = None
    tel = None

    def __init__(self, name, age, tel):
        self.name = name
        self.age = age
        self.tel = tel
        print("Student类创建了一个类对象")  # 验证是否会自动运行

stu = Student("小明", 24, "18500006666")
print(stu.name)
print(stu.age)
print(stu.tel)

注意事项:

  • 重要的事情说三遍,构造方法名称:init init init , 千万不要忘记init前后都有2个下划线
  • 构造方法也是成员方法,不要忘记在参数列表中提供:self
  • 在构造方法内定义成员变量,需要使用self关键字
    在这里插入图片描述
    这是因为:变量是定义在构造方法内部,如果要成为成员变量,需要用self来表示。

案例小作业
在这里插入图片描述

魔术方法

__str__字符串方法

在这里插入图片描述
当类对象需要被转换为字符串之时,会输出如上结果(内存地址)
内存地址没有多大作用,我们可以通过__str__方法,控制类转换为字符串的行为。
在这里插入图片描述
方法名:__str__
返回值:字符串
内容:自行定义

代码示例:

# 定义一个类
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}"

stu = Student("小明", 31)
print(stu)
print(str(stu))
__lt__小于符号比较方法

在这里插入图片描述
比较大于符号的魔术方法是:__gt__
不过,实现了__lt____gt__就没必要实现了

代码演示:

# 定义一个类
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}"
        
stu1 = Student("小明", 19)
stu2 = Student("小红", 20)
print(stu1 < stu2)
print(stu1 > stu2)
__le__小于等于比较符号方法

魔术方法:__le__可用于: <= 、 >= 两种比较运算符上。
在这里插入图片描述
在这里插入图片描述

代码示例:

# 定义一个类
class Student:
    def __init__(self, name, age):
        self.name = name  # 学生姓名
        self.age = age  # 学生年龄
            # __le__魔术方法
            
    def __le__(self, other):
        return self.age <= other.age
     
stu1 = Student("小明", 19)
stu2 = Student("小红", 20)
print(stu1 <= stu2)
print(stu1 >= stu2)
__eq__比较运算符实现方法

在这里插入图片描述
不实现__eq__方法,对象之间可以比较,但是是比较内存地址,也即是:不同对象==比较一定是False结果。
实现了__eq__方法,就可以按照自己的想法来决定2个对象是否相等了。

代码示例:

# 定义一个类
class Student:
    def __init__(self, name, age):
        self.name = name  # 学生姓名
        self.age = age  # 学生年龄
   
    # __eq__魔术方法
    def __eq__(self, other):
        return self.age == other.age

stu1 = Student("小明", 19)
stu2 = Student("小红", 20)
print(stu1 == stu2)

总结:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值