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 中可被任何对象调用。本文详细介绍了这些方法的具体代码实现,并通过示例代码展示了每个方法的作用。