Python object类中的特殊方法代码讲解

1. Python object类的特殊方法介绍

在 Python 中,所有的对象都是可调用的。因此它们都有一些基本的特殊方法,负责创建、初始化、销毁和比较对象等功能。这些特殊方法是在 Python object 类中定义的,因此它们可以被任何对象调用。下面就来一一介绍这些特殊方法的代码实现。

2. \_\_new__方法

\_\_new__方法是在一个对象实例创建之前被调用的,并且必须返回一个对象实例。它是一个静态方法,因此它的第一个参数不是 self 而是 cls,代表要实例化的类。

2.1 使用示例

class Person:

def __new__(cls, *args, **kwargs):

print('Creating instance...')

instance = super().__new__(cls)

return instance

p1 = Person()

上面的代码中,我们重写了 \_\_new__ 方法,增加了一个打印信息的模块。运行代码后,我们可以看到控制台输出了 'Creating instance...',证明这个特殊方法已经被成功调用。

3. \_\_init__方法

\_\_init__方法是在对象实例创建后被调用的,用于初始化对象的属性和方法。它不需要返回值,只需要对对象进行赋值和修改即可。

3.1 使用示例

class Person:

def __init__(self, name, age):

self.name = name

self.age = age

p1 = Person('Tom', 18)

print(p1.name, p1.age) # 输出 'Tom 18'

上面的代码中,我们定义了一个 Person 类,并在 \_\_init__ 方法中初始化了对象的 name 和 age 属性。运行代码后,我们可以看到控制台成功输出了 'Tom 18',证明这个特殊方法已经被成功调用。

4. \_\_del__方法

\_\_del__方法是在一个对象实例被销毁之前被调用的,用于释放资源和进行一些清理操作。

4.1 使用示例

class Person:

def __del__(self):

print('Destroying instance...')

p1 = Person()

del p1 # 手动删除对象实例

上面的代码中,我们重写了 \_\_del__ 方法,增加了一个打印信息的模块。运行代码后,我们可以看到控制台输出了 'Destroying instance...',证明这个特殊方法已经被成功调用。

5. \_\_str__方法

\_\_str__方法是将对象转化为字符串时被调用的方法。它必须返回一个字符串。

5.1 使用示例

class Person:

def __init__(self, name, age):

self.name = name

self.age = age

def __str__(self):

return f'{self.name}, {self.age}'

p1 = Person('Tom', 18)

print(str(p1)) # 输出 'Tom, 18'

上面的代码中,我们重写了 \_\_str__ 方法,增加了一个返回字符串的功能。通过使用 str() 函数,我们将对象 p1 转化为了字符串,并在控制台上成功输出了 'Tom, 18'。

6. \_\_eq__方法

\_\_eq__ 方法是用于比较两个对象是否相等的方法。它必须返回一个布尔值。

6.1 使用示例

class Person:

def __init__(self, name, age):

self.name = name

self.age = age

def __eq__(self, other):

if self.name == other.name and self.age == other.age:

return True

else:

return False

p1 = Person('Tom', 18)

p2 = Person('Tom', 18)

print(p1 == p2) # 输出 'True'

上面的代码中,我们重写了 \_\_eq__ 方法,用于比较两个对象是否相等。运行代码后,我们可以看到控制台成功输出了 'True',证明这个特殊方法已经被成功调用。

7. \_\_repr__方法

\_\_repr__ 方法用于产生一个对象的字符串表示形式。

7.1 使用示例

class Person:

def __init__(self, name, age):

self.name = name

self.age = age

def __repr__(self):

return f'Person({self.name}, {self.age})'

p1 = Person('Tom', 18)

print(repr(p1)) # 输出 'Person(Tom, 18)'

上面的代码中,我们重写了 \_\_repr__ 方法,增加了一个产生对象字符串表示的功能。通过使用 repr() 函数,我们将对象 p1 转化为了字符串,并在控制台上成功输出了 'Person(Tom, 18)'。

总结

Python object 类中的特殊方法是用于创建、初始化、销毁和比较对象等功能的一组方法,在 Python 中可被任何对象调用。本文详细介绍了这些方法的具体代码实现,并通过示例代码展示了每个方法的作用。

后端开发标签