gpt4 book ai didi

python - 如何制作列表对象?实例没有属性 '__getitem__'

转载 作者:太空狗 更新时间:2023-10-30 02:48:46 24 4
gpt4 key购买 nike

我是 Python 和 OOP 的新手。我有一个错误 "...instance has no attribute '__getitem__'",我知道我创建的对象不是列表。我怎样才能成为一个列表对象。这是类文件:

#!/usr/bin/python -tt

import math, sys, matrix, os

class Point:
'Class for points'
pointCount = 0

def __init__(self, x, y, z):
'initialise the Point from three coordinates'
self.x = x
self.y = y
self.z = z
Point.pointCount += 1

def __str__(self):
'print the Point'
return 'Point (%f, %f, %f)' %(self.x, self.y, self.z)

def copyPoint(self, distance):
'create another Point at distance from the self Point'
return Point(self.x + distance[0], self.y + distance[1], self.z + distance[2])

def __del__(self):
'delete the Point'
Point.pointCount -= 1
#print Point.pointCount
return '%s deleted' %self

我需要将它作为一个点,其中包含三个坐标(x、y、z),并且这些坐标必须是“可调用的”,就像在带有 [] 的列表实例中一样。

我读过类似的主题,但不太了解。请用简单的文字并举例说明。

最佳答案

写一个__getitem__方法:

def __getitem__(self, item):
return (self.x, self.y, self.z)[item]

这构造了 x、y 和 z 的元组,并使用 Python 自己的索引工具来访问它。

或者,您可以将自己的内部存储切换为元组,并为 x、y 和 z 创建属性:

def __init__(self, x, y, z):
self.coords = (x, y, z)

@property
def x(self): # sim. for y, z
return self.coords[0]

def __getitem__(self, item):
return self.coords[item]

关于python - 如何制作列表对象?实例没有属性 '__getitem__',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com