Python_类,对象,构造方法,魔术方法

基础概念

类是对象的抽象集,定义了对象的属性和行为。属性通常通过变量表示,而行为则通过方法(函数)来定义。
类的定义
class 关键字
类名(通常使用驼峰命名法)
__init__ 方法,它是类的构造函数,用于初始化对象的状态
属性(变量)
方法(函数)

基本语法

class ClassName:
    def __init__(self, param1, param2, ..., paramN):
        # 初始化属性
        self.attribute1 = param1
        self.attribute2 = param2
        # ...
    def method1(self, param1, ..., paramN):
        # 方法实现
        pass
    def method2(self, param1, ..., paramN):
        # 方法实现
        pass
创建类的实例(对象)时,会自动调用 `__init__` 方法。

用类表示一个“人”:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def display(self):
        print(f"Name: {self.name}, Age: {self.age}")
    def greet(self):
        print(f"Hello, my name is {self.name}.")
# 实例化Person类
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)
# 调用方法
person1.display()  # 输出: Name: Alice, Age: 30
person2.greet()   # 输出: Hello, my name is Bob.
详细释义:

Person 是一个类。__init__ 是构造函数,用于初始化对象的 nameage 属性。displaygreet 是两个方法,分别用于显示人的信息和打招呼。person1person2 是两个 Person 类的实例。

构造方法

在Python中,构造方法是一个特殊的方法,其名称为 `__init__`。每当创建一个类的实例时,Python会自动调用这个方法。构造方法的主要目的是初始化新创建的对象的状态。
使用准则
构造方法的名字必须是 __init__
构造方法总是至少有一个参数,通常命名为 self,它指向正在创建的对象本身。
可以有任意数量的其他参数,这些参数用于初始化对象的属性。

构造方法语法

class ClassName:
    def __init__(self, param1, param2, ..., paramN):
        # 初始化对象属性
        self.attribute1 = param1
        self.attribute2 = param2
        # ...

Person 类中构造方法的说明:

class Person:
    def __init__(self, name, age):
        # self 指向正在创建的Person对象
        # 使用传入的参数初始化对象的属性
        self.name = name
        self.age = age
    def display(self):
        print(f"Name: {self.name}, Age: {self.age}")
    def greet(self):
        print(f"Hello, my name is {self.name}.")
在这个例子中,构造方法 `__init__` 接受两个参数:`name` 和 `age`。这些参数用于初始化 `Person` 对象的 `name` 和 `age` 属性。

使用构造方法创建对象

创建一个新的 `Person` 对象时,Python会调用 `__init__` 方法,并将你提供的参数传递给它:
# 创建一个新的Person对象,名为Alice,年龄为30
person1 = Person("Alice", 30)
# 创建另一个Person对象,名为Bob,年龄为25
person2 = Person("Bob", 25)
# 这时,person1和person2都有name和age属性,它们是在构造方法中初始化的
在这个例子中,`person1` 和 `person2` 是通过 `Person` 类的构造方法创建的。构造方法为每个对象设置了 `name` 和 `age` 属性。这些属性可以在类的其他方法中使用,正如 `display` 和 `greet` 方法所展示的那样。

魔术方法

在Python中,魔术方法(也称为特殊方法或双下方法)是类中以双下划线开头和结尾的方法,如 `__init__`、`__str__`、`__repr__` 等。这些方法通常具有特殊的意义,它们可以让类实例在进行某些操作时表现出特定的行为。
__init__(self, [...])构造方法,在创建新实例时调用,用于初始化对象。
__str__(self)当使用 print() 函数或 str() 函数时调用,应返回对象的字符串表示。
__repr__(self)类似于 __str__,但 __repr__ 应返回一个对象的官方字符串表示,通常用于调试。
__del__(self)析构方法,在对象被销毁(垃圾回收)时调用。
__eq__(self, other)定义等于符号的行为,用于比较两个对象的相等性。
__lt__(self, other)__gt__(self, other)分别定义小于 < 和大于 > 符号的行为。
__add__(self, other)定义加法 + 的行为。
__sub__(self, other)定义减法 - 的行为。
__mul__(self, other)定义乘法 * 的行为。
__len__(self)当使用 len() 函数时调用,应返回对象的长度。

包含几个魔术方法的 Person

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __str__(self):
        return f"Person(name={self.name}, age={self.age})"
    def __repr__(self):
        return f"Person('{self.name}', {self.age})"
    def __eq__(self, other):
        if isinstance(other, Person):
            return self.name == other.name and self.age == other.age
        return False
# 创建Person对象
person1 = Person("Alice", 30)
person2 = Person("Alice", 30)
person3 = Person("Bob", 25)
# 使用__str__和__repr__
print(str(person1))  # 输出: Person(name=Alice, age=30)
print(repr(person1))  # 输出: Person('Alice', 30)
# 使用__eq__
print(person1 == person2)  # 输出: True
print(person1 == person3)  # 输出: False
详细释义:

__str__ 方法返回一个易于阅读的字符串表示,通常用于打印对象时。__repr__ 方法返回一个对象的官方字符串表示,这个表示通常可以用来重新创建该对象。__eq__ 方法定义了两个 Person 对象何时被视为相等,这里我们定义了当两个对象的 nameage 属性都相等时,这两个对象才相等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值