python---类、成员方法、构造方法(__init__)、其他的魔术方法

本文介绍了Python中类的组成,包括属性(成员变量)和行为(成员方法),并通过示例展示了类和成员方法的定义语法。self关键字在成员方法中用于引用类对象本身,使得方法能访问成员变量。文章还讨论了构造方法(__init__)在创建对象时自动运行并初始化成员变量的作用,以及一些魔术方法如__str__、__lt__、__le__和__eq__的功能和用法。

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

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. 构造方法 

构造方法的作用:

       构建类对象的时候会自动运行

       构建类对象的时候传参会传递给构造方法,可以给成员变量赋值

注意:

构造方法不要忘记self关键字
在方法内使用成员变量需要使用self
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种比较

    
__str__方法:返回值:字符串。当类对象需要被转换为字符串之时,会输出 (内存地址),可以通过__str__方法,控制类转换为字符串的行为。
(日常美图时间)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三月七꧁ ꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值