Python面向对象特殊属性及方法解析
在Python的面向对象编程中,某些属性和方法被视为特殊的。它们被称为“魔法方法”或“Dunder方法”(Double Underscore Methods),因为它们的方法名用双下划线包围。
这样的方法有一些特殊的用途,如用于自定义运算符、比较操作和创建迭代器等。
下面详细介绍几种常用的特殊属性和方法:
__init__(self, …)方法
__init__(self, …)方法是Python中的构造方法,用于在创建对象时进行初始化操作,它必须在新创建对象时被调用。
示例:
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
s1 = Student("Tom", 18)
print(s1.name)
print(s1.age)
__str__(self)方法
__str__(self)方法用于返回对象的字符串表示,通常用于打印对象时使用。
示例:
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return "Name: " + self.name + ", Age: " + str(self.age)
s1 = Student("Tom", 18)
print(s1)
__repr__(self)方法
__repr__(self)方法用于返回对象的“官方”字符串表示,它通常用于在交互式环境中显示对象。如果没有定义__repr__(self)方法,则会自动调用对象的__str__(self)方法。
示例:
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return "Student(\"" + self.name + "\", " + str(self.age) + ")"
s1 = Student("Tom", 18)
print(s1)
__len__(self)方法
__len__(self)方法用于返回对象的长度或大小,通常用于序列。
示例:
class MyList:
def __init__(self, a):
self.lst = a
def __len__(self):
return len(self.lst)
lst = MyList([1, 2, 3])
print(len(lst))
__add__(self, other)方法
__add__(self, other)方法用于定义对象的加法操作。
示例:
class MyInt:
def __init__(self, x):
self.x = x
def __add__(self, other):
if isinstance(other, MyInt):
return MyInt(self.x + other.x)
else:
raise TypeError("unsupported operand type for +")
a = MyInt(1)
b = MyInt(2)
c = a + b
print(c.x)
以上就是Python面向对象特殊属性及方法的一些常见用法,如果需要深入了解,请参考Python官方文档。