前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >八、python学习笔记-面向对象-特殊的类成员

八、python学习笔记-面向对象-特殊的类成员

原创
作者头像
堕落飞鸟
发布2022-01-14 09:25:41
2270
发布2022-01-14 09:25:41
举报
文章被收录于专栏:飞鸟的专栏
代码语言:javascript
复制
# 特殊的类成员(方法)
"""
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档