Python是一门非常流行的编程语言,通过使用Python,我们可以完成各种各样的任务。
Python中有很多内置的函数和方法,它们可以帮助我们更好地完成编程任务。
其中,魔法函数是Python中非常重要的一部分。
在本文中,我们将为Python编程小白介绍10个常用的魔法函数,并提供对应的代码案例,帮助读者更好地理解和掌握Python编程。
__init__函数是Python中非常常用的一个魔法函数。它是在对象被创建时自动调用的函数,用于初始化对象的属性。下面是一个示例:
class Person: def __init__(self, name, age): self.name = name self.age = age person = Person('小明', 18) print(person.name) print(person.age)
运行上面的代码,输出结果如下:
小明 18
我们可以看到,__init__函数初始化了Person对象的name和age属性,并通过实例化Person类创建了一个名为person的对象。在输出中,我们可以看到person对象的name属性为“小明”,age属性为18。
__str__函数是Python中用于打印对象信息的魔法函数。它在对象被打印时自动调用,用于返回对象的字符串表示形式。下面是一个示例:
class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return '姓名:' + self.name + ' 年龄:' + str(self.age) person = Person('小明', 18) print(person)
运行上面的代码,输出结果如下:
姓名:小明 年龄:18
我们可以看到,__str__函数返回了一个字符串表示形式,包含了person对象的姓名和年龄属性。
__len__函数是Python中用于获取对象长度的魔法函数。它在调用len()函数时自动调用,用于返回对象的长度。下面是一个示例:
class MyList: def __init__(self, *args): self.data = list(args) def __len__(self): return len(self.data) my_list = MyList(1, 2, 3, 4, 5) print(len(my_list))
运行上面的代码,输出结果如下:
5
我们可以看到,__len__函数返回了my_list对象的长度,即5。
__getitem__函数是Python中用于获取对象元素的魔法函数。它在调用对象索引时自动调用,用于返回对象的元素。下面是一个示例:
class MyList: def __init__(self, *args): self.data = list(args) def __getitem__(self, index): return self.data[index] my_list = MyList(1, 2, 3, 4, 5) print(my_list[0]) print(my_list[2])
运行上面的代码,输出结果如下:
1 3
我们可以看到,__getitem__函数返回了my_list对象的第一个和第三个元素,即1和3。
__setitem__函数是Python中用于设置对象元素的魔法函数。它在调用对象索引赋值时自动调用,用于设置对象的元素。下面是一个示例:
class MyList: def __init__(self, *args): self.data = list(args) def __setitem__(self, index, value): self.data[index] = value my_list = MyList(1, 2, 3, 4, 5) my_list[0] = 0 print(my_list.data)
运行上面的代码,输出结果如下:
[0, 2, 3, 4, 5]
我们可以看到,__setitem__函数将my_list对象的第一个元素设置为0,并输出了my_list对象的所有元素。
__getattr__函数是Python中用于获取对象属性的魔法函数。它在获取对象属性失败时自动调用,用于返回对象的属性值。下面是一个示例:
class Person: def __init__(self, name, age): self.name = name self.age = age def __getattr__(self, attr): return '没有找到属性:' + attr person = Person('小明', 18) print(person.gender)
运行上面的代码,输出结果如下:
没有找到属性:gender
我们可以看到,__getattr__函数返回了一个字符串,表示没有找到person对象的gender属性。
__call__函数是Python中用于调用对象的魔法函数。它在调用对象时自动调用,用于执行对象的操作。下面是一个示例:
class Add: def __call__(self, x, y): return x + y add = Add() print(add(1, 2))
运行上面的代码,输出结果如下:
3
我们可以看到,__call__函数将add对象作为一个函数调用,并返回了1加2的结果。
__enter__和__exit__函数是Python中用于管理资源的魔法函数。它们在with语句块中自动调用,用于管理资源的获取和释放。下面是一个示例:
class MyFile: def __init__(self, filename): self.filename = filename def __enter__(self): self.file = open(self.filename, 'r') return self.file def __exit__(self, type, value, trace): self.file.close() with MyFile('test.txt') as f: print(f.read())
运行上面的代码,输出结果如下:
这是一个测试文件。
我们可以看到,__enter__函数打开了名为test.txt的文件,并返回了文件对象,而__exit__函数关闭了文件。
__iter__和__next__函数是Python中用于迭代器的魔法函数。它们在迭代器被创建和执行下一个迭代时自动调用。下面是一个示例:
class MyRange: def __init__(self, start, end): self.start = start self.end = end def __iter__(self): return self def __next__(self): if self.start >= self.end: raise StopIteration value = self.start self.start += 1 return value my_range = MyRange(1, 5) for i in my_range: print(i)
运行上面的代码,输出结果如下:
1 2 3 4
我们可以看到,__iter__函数返回了my_range对象本身,而__next__函数返回了my_range对象的下一个值。
__del__函数是Python中用于对象销毁的魔法函数。它在对象被销毁时自动调用,用于执行对象的清理操作。下面是一个示例:
class Person: def __init__(self, name): self.name = name def __del__(self): print(self.name + '被销毁了。') person = Person('小明') del person
运行上面的代码,输出结果如下:
小明被销毁了。
我们可以看到,__del__函数在person对象被销毁时自动调用,输出了一个字符串。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com