# 特殊的类成员(方法)
"""
1、被python默认定义的一些方法
2、这些方法都有着特定功能
3、这些方法都有着特定的调用方式
4、部分特殊类方法存在默认值,例如__str__、__dict__,当手动添加时,相当于重写父类方法
5、部分特殊类方法没有返回值例如__setitem__、__delitem__,调用方式没有接收返回值位置(一个是赋值操作,一个是删除操作,均不接收返回值)
"""
class Foo:
"""
此处为注释
"""
def __init__(self):
self.name = 'name'
pass
def __call__(self, *args, **kwargs):
return '这是call'
def __str__(self):
return '这是str'
def __int__(self):
return 10
def __len__(self):
return 20
def __add__(self, other):
return 30
def __del__(self): # 析构方法,当对象被销毁时自动执行,删除在内存中的数据,回收内存资源
pass
def __getitem__(self, item):
return item + 10
def __setitem__(self, key, value):
print(key, value)
def __delitem__(self, key):
print(key)
def __iter__(self):
return iter([1, 2, 3])
bar = Foo() # 执行__init__
print(bar()) # 执行__call__, 等效于Foo()()
print(str(bar)) # 执行__str__,
print(bar) # print(obj)也可以直接调用__str__
print(int(bar)) # 执行__int__
print(len(bar)) # 执行__len__
print(bar+bar) # 两个对象相加时会自动执行第一个对象的__add__方法,并将第二个对象作为参数传入
print(bar.__dict__) # __dict__将对象中封装的所有内容通过字典的形式返回
print(Foo.__dict__) # __dict__将类中封装的所有内容通过字典的形式返回
print(bar[1]) # 执行 __getitem__,将1当做参数传递给方法
bar[2] = 22 # 执行__setitem__,将2作为key 将2作为value传递给方法
del bar[3] # 执行__delitem__,将3作为key传递给方法
for i in bar: # 执行__iter__,取得返回值,并循环返回值。(只有有__iter__就是可迭代的),返回值应该是一个迭代器
print(i)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。