__class_getitem__之所以存在,是因为在涉及多个元类的情况下使用多继承非常棘手,并且设置了在使用3rd-party库时无法始终满足的限制。 如果没有__class_getitem__,泛型需要一个元类,因为在类上定义__getitem__方法只能处理实例上的属性访问,而不是类上的属性。通常,object[...]语法由object类型处理,而不是由obje...
class C(object): def __getitem__(self, val): print(val) c = C() print(c[4]) print(c[0,2]) print(c[0:2]) 发现几种比较常用的访问方式: int slice tuple 也就是我们在用[]进行访问的时候实际上对应地传入的是这几种类型. 那么我们只需要在__getitem__里对类型进行判断进行不同的处理...
对于映射来说,假如键就是字典中的键,一般写成__getitem__(self,key) 如果在类中定义了__getitem__()方法,那么它的实例对象(假设为P)就可以这样P[index]取值或者这样p[key]取值。 当实例对象做P[index或key]运算时,就会自动调用类中的__getitem__(self,key) 点击查看代码 # -*- coding:utf-8 -*-cla...
原因是__getitem__()传入的参数可能是一个int,也可能是一个切片对象slice,所以要做判断: AI检测代码解析 class Fib(object): def __getitem__(self, n): if isinstance(n, int): # n是索引 a, b = 1, 1 for x in range(n): a, b = b, a + b return a if isinstance(n, slice): # n...
1、getitem方法 使用这个方法最大的印象就是调用对象的属性可以像字典取值一样使用中括号['key'] 使用中括号对对象中的属性进行取值、赋值或者删除时,会自动触发对应的__getitem__、__setitem__、__delitem__方法 代码如下: classFoo(object):def__init__(self): ...
1 class Foo: 2 def __del__(self): 3 print('执行我啦') 4 5 f= Foo() 6 print(123) 7 print(123) 8 print(123) 9 print(123) 1. 2. 3. 4. 5. 6. 7. 8. 9. 3.item系列 分别有__getitem__ ,__setitem__ ,__delitem__ ...
黄哥Python 联系方式,自己搜'''classDataBase:'''Python 3 中的类'''def__init__(self,id,address):'''初始化方法'''self.id=id self.address=address self.d={self.id:1,self.address:"192.168.1.1",}def__getitem__(self,key):#returnself.__dict__.get(key,"100")returnself.d.get(key,"...
Python:一对列表的线性__getitem__ 我现在有一个类,它存储列表列表。内部列表的长度不相同。我用下面的代码使这个类可以下标(可能不是最好的方法,也可能过于花哨)。 class MyClass: def __init__(self): # self.instructions = [] # for demo purposes...
class DataBase: '''Python 3 中的类''' def __init__(self, id, address): '''初始化方法''' self.id = id self.address = address self.d = {self.id: 1, self.address: "192.168.1.1", } def __getitem__(self, key): # return self.__dict__.get(key, "100") ...
class fang(): def __init__(self,b): self.b = b def __getitem__(self, item): print(item) return self.b #注意这里_getitem_的返回值仅是b,没有下标 c= 'abcdefg' shi_li = fang(c) print(shi_li[2]) 输出: 2 abcdefg class fang(): def __init__(self,b): self.b = b def ...