Python面向对象特殊属性及方法解析

  • Post category:Python

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官方文档。