python中类的使用,方法,魔术方法

Python类与对象实践
本文通过实例介绍Python中类和对象的基本概念,演示如何定义类、创建对象,并使用类中的方法。同时,深入探讨特殊方法如__init__、__str__、__lt__等的应用。

python是一种面向类和对象的语言,类(class)中可以存放很多方便调用的变量和方法

下面定义一个简单的类:

class Student:
    name = None

这里定义了一个Student的类,其中变量name的初值为None

方法,是类里的“函数”,可以方便的调用

定义类里的方法:

    def say_hi(self):
        print(f"大家好好好啊好,我是{self.name}。")

这里定义了一个类中的方法,用于打印类中name的字符串

下面使用刚刚定义的类创建两个对象,给对象赋值并调用类里的方法

stu1 = Student()
stu1.name = "学生1"
stu1.say_hi()

stu2 = Student()
stu2.name = "学生2"
stu2.say_hi()

运行上述代码即可得到:

大家好好好啊好,我是学生1。
大家好好好啊好,我是学生2。

下面重新定义Student这个类,用于练习魔术方法的使用:

class Student:
    # 开始类就执行的方法
    def __init__(self, name, age ,tel):
        self.name = name
        self.age = age
        self.tel = tel
        print(f"Student类创建了一个类对象{self.name}")

    # 把类从内存地址变成字符串
    def __str__(self):
        return  f"Student类对象, name:{self.name}, age:{self.age}, tel:{self.tel}"

    # 2个类对象大于小于比较,返回T、F
    def __lt__(self, other):
        return self.age < other.age

    # 2个类对象大于等于或小于等于比较,返回T、F
    def __le__(self, other):
        return self.age <= other.age

    # 2个类对象进行相等比较,返回T、F
    def __eq__(self, other):
        return self.age == other.age


stu1 = Student("学生1", 22, "12356888552")
stu2 = Student("学生2", 25, "13245325382")
print(stu1.name)
print(stu1.age)
print(stu1.tel)
print(stu1)
print(stu1 < stu2)
print(stu1 <= stu2)
print(stu1 == stu2)

魔术方法使用__xx__的方式进行表示,在上述代码中:

__init__是一个调用类就会执行的魔术方法,可以用于创建对象时变量的设定

__str__用于将对象中的变量转为字符串

__lt__用于两个对象大于小于的比较,返回True或False

__le__用于两个对象大于等于小于等于的比较,返回True或False

__eq__用于两个对象等于的比较,返回True或False

执行代码,得到如下结果:

Student类创建了一个类对象学生1
Student类创建了一个类对象学生2
学生1
22
12356888552
Student类对象, name:学生1, age:22, tel:12356888552
True
False
False

以上简单记录了自己学习类的过程,如有错误大佬多多指正

<think>好的,用户想了解Python中的魔术方法,特别是__init__和__str__的用法和常见示例。首先,我需要回顾一下这些魔术方法的基本概念和作用。 根据用户提供的引用内容,魔术方法如__init__和__str__是用于定义对象行为的特殊方法。例如,__init__是构造方法,在建对象时初始化属性;__str__则用于返回对象的用户友好字符串表示,通常在打印对象时调用。用户可能已经看过一些示例,但需要更详细的解释和实际应用场景。 接下来,我需要组织信息,确保结构清晰。先解释每个方法的作用,然后给出示例代码,这样用户能直观理解。例如,引用[2]中提到了__init__的示例,可以在此基础上扩展,说明不同参数的初始化。引用[3]和[4]讨论了__str__和__repr__的区别,这点很重要,用户可能需要知道何时使用哪个方法。 还要注意用户可能存在的疑问点,比如为什么需要同时使用__str__和__repr__,或者如何在自定义中正确重写这些方法。需要解释两者的区别,比如__str__用于用户可读的输出,而__repr__更适合开发者调试,并且当__str__未定义时,会回退到__repr__。 另外,用户提到的常见示例部分,应该包括多个魔术方法的应用,比如除了__init__和__str__之外,还可以简要提及__repr__,以展示更全面的信息。同时,代码示例需要符合规范,正确使用的定义和方法的重写。 最后,生成的相关问题需要围绕用户可能进一步想了解的内容,比如其他常用的魔术方法,如何自定义运算符重载,或者实际项目中的应用案例。这些问题应该帮助用户深入学习和解决可能遇到的困惑。</think>### Python魔术方法使用说明 #### 一、核心魔术方法解析 1. **`__init__` 方法** - **功能**:构造方法,在实例时自动调用,用于初始化对象属性 - **示例**: ```python class Student: def __init__(self, name, score): self.name = name # 初始化姓名属性[^2] self.score = score # 初始化分数属性 ``` - **特性**: - 第一个参数必须是`self` - 支持多参数定义,可设置默认值 - 不可返回非`None`值 2. **`__str__` 方法** - **功能**:定义对象的用户友好字符串表示,通过`print()`或`str()`触发[^3] - **示例**: ```python class Student: def __str__(self): return f"学生:{self.name}(成绩:{self.score}分)" ``` - **与`__repr__`的区别**: - `__str__`面向用户,`__repr__`面向开发者 - 未定义`__str__`时,默认调用`__repr__`[^4] #### 二、综合应用示例 ```python class Product: def __init__(self, name, price, stock): self.name = name self.price = price self.stock = stock def __str__(self): return f"{self.name} | 价格:¥{self.price} | 库存:{self.stock}件" def __repr__(self): return f"<Product({self.name}, {self.price}, {self.stock})>" # 使用示例 p = Product("无线耳机", 299, 50) print(p) # 输出:无线耳机 | 价格:¥299 | 库存:50件 print(repr(p)) # 输出:<Product(无线耳机, 299, 50)> ``` #### 三、使用场景对比 | 方法 | 触发场景 | 设计目的 | |------------|-----------------------------|------------------| | `__init__` | 对象实例化时 | 属性初始化 | | `__str__` | `print(obj)`, `str(obj)` | 用户友好展示 | | `__repr__` | 交互式环境直接输出对象 | 开发者调试信息 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值