jjzjj

python - 可以在 __getitem__ 上使用多个参数吗?

我正在尝试使用__getitem__(self,x,y):在我的Matrix类上,但在我看来它不起作用(我仍然不太了解如何使用python)。我这样调用它:printmatrix[0,0]是否可以使用多个参数?谢谢。也许我只能使用一个参数但将其作为元组传递? 最佳答案 __getitem__只接受一个参数(self除外),所以你会得到一个元组。你可以这样做:classmatrix:def__getitem__(self,pos):x,y=posreturn"fetching%s,%s"%(x,y)m=matrix()printm[1

python - 为什么 list 会询问 __len__?

classFoo:def__getitem__(self,item):print('getitem',item)ifitem==6:raiseIndexErrorreturnitem**2def__len__(self):print('len')return3classBar:def__iter__(self):print('iter')returniter([3,5,42,69])def__len__(self):print('len')return3演示:>>>list(Foo())lengetitem0getitem1getitem2getitem3getitem4getitem

python - 为什么 list 会询问 __len__?

classFoo:def__getitem__(self,item):print('getitem',item)ifitem==6:raiseIndexErrorreturnitem**2def__len__(self):print('len')return3classBar:def__iter__(self):print('iter')returniter([3,5,42,69])def__len__(self):print('len')return3演示:>>>list(Foo())lengetitem0getitem1getitem2getitem3getitem4getitem

python - 'int' 对象没有属性 '__getitem__'

importmathimportosclasscollection:col=[[0forcolinrange(5)]forrowinrange(6)]dist=[[0forcolinrange(6)]forrowinrange(6)]filename=""result=""def__init__(self,arg1):self.filename=arg1defcoll(self):foriinrange(6):try:if(i==0):f=open(self.filename,'r')elif(i==1):f=open("chap1.txt",'r')elif(i==2):f=open

python - 'int' 对象没有属性 '__getitem__'

importmathimportosclasscollection:col=[[0forcolinrange(5)]forrowinrange(6)]dist=[[0forcolinrange(6)]forrowinrange(6)]filename=""result=""def__init__(self,arg1):self.filename=arg1defcoll(self):foriinrange(6):try:if(i==0):f=open(self.filename,'r')elif(i==1):f=open("chap1.txt",'r')elif(i==2):f=open

python - 为什么在类上定义 __getitem__ 使其在 python 中可迭代?

为什么在类上定义__getitem__会使其可迭代?例如,如果我写:classb:def__getitem__(self,k):returnkcb=b()forkincb:printk我得到了输出:012345678...我真的希望看到“forkincb:”返回错误 最佳答案 迭代对__getitem__的支持可以看作是“遗留功能”,当PEP234将迭代性作为主要概念引入时,它可以实现更平滑的过渡。它仅适用于没有__iter__的类,其__getitem__接受整数0、1和&c,并在索引过高时引发IndexError(如果有的话))

python - 为什么在类上定义 __getitem__ 使其在 python 中可迭代?

为什么在类上定义__getitem__会使其可迭代?例如,如果我写:classb:def__getitem__(self,k):returnkcb=b()forkincb:printk我得到了输出:012345678...我真的希望看到“forkincb:”返回错误 最佳答案 迭代对__getitem__的支持可以看作是“遗留功能”,当PEP234将迭代性作为主要概念引入时,它可以实现更平滑的过渡。它仅适用于没有__iter__的类,其__getitem__接受整数0、1和&c,并在索引过高时引发IndexError(如果有的话))

python - 理解 __getitem__ 方法

我已经浏览了Python文档中__getitem__的大部分文档,但我仍然无法理解它的含义。所以我能理解的是__getitem__用于实现self[key]之类的调用。但是它有什么用呢?假设我有一个以这种方式定义的python类:classPerson:def__init__(self,name,age):self.name=nameself.age=agedef__getitem__(self,key):print("Inside`__getitem__`method!")returngetattr(self,key)p=Person("Subhayan",32)print(p["a

python - 理解 __getitem__ 方法

我已经浏览了Python文档中__getitem__的大部分文档,但我仍然无法理解它的含义。所以我能理解的是__getitem__用于实现self[key]之类的调用。但是它有什么用呢?假设我有一个以这种方式定义的python类:classPerson:def__init__(self,name,age):self.name=nameself.age=agedef__getitem__(self,key):print("Inside`__getitem__`method!")returngetattr(self,key)p=Person("Subhayan",32)print(p["a

python - 在 __getitem__ 中实现切片

我正在尝试为我正在创建的创建矢量表示的类实现切片功能。到目前为止,我有这段代码,我相信它会正确实现切片,但是每当我执行像v[4]这样的调用时,其中v是一个向量,python返回一个关于没有足够参数的错误.所以我想弄清楚如何在我的类中定义getitem特殊方法来处理普通索引和切片。def__getitem__(self,start,stop,step):index=startifstop==None:end=start+1else:end=stopifstep==None:stride=1else:stride=stepreturnself.__data[index:end:stride