python - Python:创建对象列表或将字符串转换为对象
问题描述
我有一个 python 代码,其中我有一个函数,我想通过对象实例列表并在满足特定条件时对这些实例进行更改。换句话说,是这样的:
def distToPlayers(self, list):
self.playerlist = list
returnls = []
for i in self.playerlist:
if distance(self.playerlist[i].xpos , self.playerlist[i].ypos) <= self.playerlist[i].catchRadius:
returnls.append(self.playerlist[i])
self.playerlist[i].caughtBall = True
return returnls
其中 distance() 只是一个给出值的函数,而 list 是一个对象实例的列表,比如 receiver1。因此,receiver1 具有 xpos 和 ypos 之类的统计信息,此函数查看输入列表中的所有玩家,计算他们与 self 对象的距离,并返回运行该函数的对象所在的玩家列表他们的捕捉半径。
我的问题是:我该怎么做?我的代码给了我奇怪的错误,例如“列表索引必须是整数,而不是对象”。我的列表索引不应该是对象,那些索引应该是对象,但无论如何,也许这不是你应该做的事情。如果有人知道如何做到这一点,请告诉我!
我还想输入一个字符串列表,这些字符串是我要讨论的对象的名称(所以我会输入:
ball.distToPlayers(['receiver1', 'defback1', etc...])
而不是ball.distToPlayers([receiver1, defback1]) ) .
Then,我会将这些字符串转换为函数内的对象名称。我知道你可以通过说,将字符串转换为整数和浮点数,反之亦然int(x) or str(x)
。有没有办法从字符串到对象实例?我试过 obj(x) 和 object(x),但似乎都不起作用。
任何建议表示赞赏。
解决方案
def distToPlayers(self, lst):
self.playerlist = lst
returnls = []
for player in self.playerlist:
if distance(player.xpos , player.ypos) <= player.catchRadius:
returnls.append(player)
player.caughtBall = True
return returnls
这是你想要的吗?
推荐阅读
- c# - 如何在 VS 2017 中设置 Angular 7 与 net core web api 进行通信
- android - 量化的 tflite 模型在使用 Firebase ML-Kit 在 android 应用程序中运行时抛出异常“加载任务失败”
- c# - 将数据从脚本发送到统一,然后统一发送到脚本
- inno-setup - Inno setup 仅删除文件夹
- python - IDLE 自动压缩大量行
- java - 可以从 gmail 发送电子邮件,但不能从 yahoo
- swift - UICollectionView 自调整大小的单元格
- java - 我正在使用 Chaquopy 交替使用 python 和 java。如何将自定义 java 对象传递给 python 模块的方法?
- kubernetes - 有什么方法可以解析从 /metrics 端点抓取的输出吗?
- apache-nifi - 在 NiFi 中如何裁剪图像?