栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么__getitem__不能是分类方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么__getitem__不能是分类方法?

特殊方法是在类上而不是实例上查找的-
与常规方法首先在实例上查找的方法不同。请参阅Python数据模型文档中的特殊方法查找。

考虑

Class
作为的实例
type
,这意味着您在

Class.getitem(test)

它首先查找您所讲的内容:

Class
名为的自己属性中的方法
getitem
。但是,当您使用

Class[test]

它跳过了这一点,直接进入

type
(是的类
Class
,或者是其元类),因此调用
type.__getitem__(Class,test)
。那么,究竟是怎么回事是不是
__getitem__
得到
type
的第一个参数(它仍然会得到
Class
,因为它如果明确
Class.__getitem__(test)
),其将
__getitem__
是Python将在这种情况下不存在。为了使其存在,您需要定义自己的元类,
Class
以将其定义为实例方法,而不是将其定义
Class
为类方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/652782.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号