首页 > 编程知识 正文

Python常用的魔术方法都有哪些

时间:2023-11-20 01:00:34 阅读:287984 作者:HERY

本文将介绍Python中常用的魔术方法,并附上相应的代码实例。

一、__init__

__init__方法是初始化对象时调用的魔术方法。

``` class Person: def __init__(self, name): self.name = name person = Person("John") print(person.name) # 输出:John ```

二、__str__和__repr__

__str__方法返回对象的字符串表示,而__repr__方法返回对象的可打印表示。

``` class Person: def __init__(self, name): self.name = name def __str__(self): return f"Name: {self.name}" def __repr__(self): return f"Person('{self.name}')" person = Person("John") print(person) # 输出:Name: John print(repr(person)) # 输出:Person('John') ```

三、__len__

__len__方法返回对象的长度。

``` class MyList: def __init__(self, items): self.items = items def __len__(self): return len(self.items) my_list = MyList([1, 2, 3]) print(len(my_list)) # 输出:3 ```

四、__getitem__和__setitem__

__getitem__方法获取对象的值,__setitem__方法设置对象的值。

``` class MyList: def __init__(self, items): self.items = items def __getitem__(self, index): return self.items[index] def __setitem__(self, index, value): self.items[index] = value my_list = MyList([1, 2, 3]) print(my_list[0]) # 输出:1 my_list[0] = 4 print(my_list[0]) # 输出:4 ```

五、__call__

__call__方法使对象可以像函数一样被调用。

``` class MyFunc: def __init__(self, name): self.name = name def __call__(self, x, y): result = x + y print(f"{self.name}: {result}") my_add = MyFunc("Add") my_add(1, 2) # 输出:Add: 3 ```

六、__add__和__sub__

__add__方法实现对象的加法运算,__sub__方法实现对象的减法运算。

``` class MyNumber: def __init__(self, value): self.value = value def __add__(self, other): return MyNumber(self.value + other.value) def __sub__(self, other): return MyNumber(self.value - other.value) a = MyNumber(1) b = MyNumber(2) c = a + b print(c.value) # 输出:3 d = a - b print(d.value) # 输出:-1 ```

七、总结

以上是Python中常用的魔术方法,它们可以让我们更灵活地操作对象,使代码更简洁、易读。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。