python 中的魔法方法(magic method):常用__getitem__()和__len__()

https://www.cnblogs.com/leesen934/p/9674671.html

1 什么是魔法方法

函数和方法的区别:

(1) 函数:类的外部定义的,形式: def func(*argv):

(2) 方法:class内部定义的函数,分为两种:

1)python 自动产生的方法(魔法方法),可以直接使用这个方法对 实例化的对象 进行操作,比如,len(test1),(假设test1是 内部实现了len方法的类实例化的对象),比较一下,通常使用实例的方法是采用 test1.func() 的形式,这就是魔法方法的特别之处:

函数会在对应的时机被调用: 外部调用这个函数对实例进行作用,实例会自动调用内部的同名函数。在类内部实现魔法方法的定义方法为:def __func__()。但是要注意不是所有加上前后双下划线的方法都是魔法方法,只有部分能够实现[https://www.cnblogs.com/seablog/p/7173107.html]。 (对比一下可调用对象,forward()函数我还没有想明白归到哪里)

2)人为定义的其他方法(函数):和普通函数类似,只不过位于类内部,调用的时候采用 实例名.方法()来调用。

2 下面使用__getitem__()__len__()举例介绍

class test():
    def __init__(self):
        self.x = [1,2,3]
    def __len__(self):
        return self.x[1]
    def __getitem__(self,key):
        return '调用了__getitem__()'
    def __func1__(self):     #在pycharm中通过看颜色就能区别
        return 'hellow'

test1 = test()
print(len(test1))    # 定义当被 len() 调用时的行为(返回容器中元素的个数)
print(test1.__len__())

print(test1.__getitem__(2))
print(test1[2])    # 定义获取容器中指定元素的行为,相当于 self[key]


通过上面例子也可以发现,key为任意值都可以调用__getitem__()方法。

3. repr()方法

image.png

image.png

4. contains

用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false, 在基类object中就有这个魔法函数。

[https://www.cnblogs.com/seablog/p/7173107.html]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 8,087评论 2 9
  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 8,242评论 0 9
  • 美妞小诗2岁2个月。 她一颦一笑,举止神情,和她爸爸小时候一模一样。看着她,仿佛拥有了全世界。 吃饭时,她要上桌子...
    HR_欣姐阅读 1,252评论 0 4
  • 李炳南先生《常礼举要》之第七会客篇 一、见先致敬,熟客道寒暄,生客请姓字住址。 二、及门先趋,为客启阖。 三、每门...
    文砚字雪鴻阅读 8,193评论 0 0
  • 1.下载maven包2.解压maven包到指定目录3.配置maven环境变量,新建M2_HOME,路径maven解...
    zl1995阅读 1,198评论 0 0

友情链接更多精彩内容