首页 > 其他分享 >元类,类,实例调用__call__方法

元类,类,实例调用__call__方法

时间:2024-12-05 10:32:33浏览次数:11  
标签:__ 调用 下划线 元类 实例 call

实例可以调用双下划线call方法;类也可以调用双下划线call方法,但二者有大的差别;
实例调用双下划线call方法是在实例及类内部查找,如果没有,直接报错TypeError
类调用双下划线call方法会在实例中查找

元类(type)内部具有__call__方法

1.	类调用触发元类的 __call__:
•	类的调用行为(MyClass())由其元类的 __call__ 控制。
•	元类的 __call__ 负责调用类的 __new__ 和 __init__。
2.	实例调用触发类的 __call__:
•	实例的调用行为(obj())由其所属类的 __call__ 方法控制。
•	如果类未定义 __call__ 方法,则会抛出 TypeError,不会回溯到元类。
3.	为什么不回溯到元类的 __call__?
•	这是 Python 的设计选择,明确分层,避免语义混乱。
•	元类的 __call__ 专注于类调用,类的 __call__ 专注于实例调用。

标签:__,调用,下划线,元类,实例,call
From: https://www.cnblogs.com/hayaso/p/18587979

相关文章

  • 11月 | Apache DolphinScheduler月度进展总结
    各位热爱ApacheDolphinScheduler的小伙伴们,社区10月份月报更新啦!这里将记录DolphinScheduler社区每月的重要更新,欢迎关注!月度Merge之星感谢以下小伙伴11月份为ApacheDolphinScheduler所做的精彩贡献(排名不分先后):“@sdhzwc,@GOODBOY008,@kevinjmh,@slimtom95,@deng-jef......
  • springboot毕设潮流数码社区系统程序+论文
    系统程序文件列表开题报告内容研究背景随着科技的飞速发展,数码产品已成为现代人生活中不可或缺的一部分。从智能手机到智能穿戴设备,从高清相机到高性能电脑,数码产品的种类和功能日益丰富,满足了人们多样化的需求。然而,面对琳琅满目的数码产品,消费者往往难以抉择,缺乏一个权威......
  • 下载安装sublime并设置中文
    下载安装sublime并设置中文创建时间:2024年2月27日1.去官网下载https://www.sublimetext.com/2.安装软件3.设置中文3.1使用ctrl+shift+p进入安装插件管理器3.2输入install。选择安装第一个出现以上显示为我们的PackageControl安装成功。ps:PackageControl......
  • springboot毕设超市综合管理系统程序+论文
    系统程序文件列表开题报告内容研究背景在当今信息化高速发展的时代,各行各业都在积极拥抱数字化管理,以提高运营效率和服务质量。超市作为零售业的重要组成部分,其日常运营涉及大量的商品管理、员工调度、库存控制及财务记录等事务。传统的人工管理方式不仅耗时费力,还容易出错......
  • 《教父》--一部人生哲学史
    一、影片概述教父是一部经典的黑帮电影,由弗朗西斯·福特·科波拉执导,改编自马里奥·普佐的同名小说。影片讲述了科里昂家族的兴衰历程,深刻探讨了权力、家庭、忠诚与背叛等主题。整个影片充斥这人际关系的处理,对于现实的我们有不少启迪。明确目标与责任影片中的角色都明......
  • 人性本质:等价资源交换,各取所需
    互相尊重与俩相情愿在我眼中,人与人之间的关系本质,真的很像一句经典的台词:“你来我欢迎,你走我不送!”老先生坦言,最重要的是互相尊重、双方情愿,这样才可以进行有效的资源交换,而不是一方尝试主导另一方,不管是曾被拒绝、不理,还是自己不理别人都是如此,人过中年真的活明白了。随......
  • (面试常考)HashMap底层原理 和 Hash冲突的解决方法
    HashMapHashMap底层数据结构底层数据结构:hash表数据结构,即数组+链表|红黑树往HashMap中put元素时,利用key的hashCode重新hash计算出当前对象的元素在数组中的下标存储时,当出现hash相同的key如果key相同,则覆盖原始值如果key不相同(hash冲突),则将当前数据放入链表或红黑树中......
  • (面试常考)Java基础 - 接口与抽象类的区别
    接口接口(Interface)的传统定义是只能包含抽象方法(即没有方法体的方法)以及常量。但是从Java8开始,接口可以包含非抽象方法了。这些非抽象方法包括:默认方法(DefaultMethods):使用default关键字声明的方法。它们允许在接口中提供一个方法的默认实现,这样实现了该接口的类可......
  • dagger.js:可能是我见过的最简单易用的前端框架了
    向大家推荐一款轻量完备且简单易用的开源前端框架dagger.js。01.什么是dagger.jsdagger.js是一个基于html的描述式单页应用开发框架,通过在页面DOM元素上添加语义化的指令来驱动业务逻辑。从语法特性的角度来说,dagger.js模板+指令的工作方式与Angular/Vue比较接近。dagger.js......
  • 索引的创建原则、索引失效的场景
    索引创建的原则有哪些?在项目中主要用到主键索引、唯一索引、根据业务创建的索引(复合索引)*针对数据量较大,而且查询比较频繁的表建立索引(单表超过10w条数据(增加用户体验))*针对常作为查询条件(where)、排序(orderby)、分组(groupby)操作做的字段建立索引尽量选择区分度高的字......