python - 访问存储在列表中的对象
问题描述
我不确定我是否已正确完成所有操作,但我想访问存储在列表中的对象。这是代码:
# Obstcale class
class obstacle(object):
def __init__(self, obstacleImg, obstacleX, obstacleY, obstacelX_change):
self.obstacleImg = pygame.image.load("rock.png")
self.obstacleX = random.randint(600, 700)
self.obstacleY = random.randint(0, ScreenHeight - 64)
self.obstacleX_change = -0.3
def spawn_obstacle(self, x, y):
screen.blit(self.obstacleImg, (x, y))
while running:
if count < 1299:
count += 1
else:
obstacle_number += 1
obstacle_list.append(obstacle)
count = 0
print(obstacle_list[obstacle_number-1])
使用打印功能,我想打印出通过访问列表创建的每个新对象,但我得到的一切都是这样的:
<class '__main__.obstacle'>
<class '__main__.obstacle'>
<class '__main__.obstacle'>
<class '__main__.obstacle'>
<class '__main__.obstacle'>
<class '__main__.obstacle'>
解决方案
创建类的实际实例。定义一个__repr__
(调试表示)以对实例进行有意义的显示也有帮助。以下是将您的代码修改为一个最小的、可重现的示例,创建一个简短的障碍列表:
import random
ScreenHeight = 600
class Obstacle(object):
def __init__(self): # removed unused parameters
self.obstacleImg = 'rock.png' # pygame.image.load("rock.png")
self.obstacleX = random.randint(600, 700)
self.obstacleY = random.randint(0, ScreenHeight - 64)
self.obstacleX_change = -0.3
def __repr__(self):
return f'Obstacle(image={self.obstacleImg!r}, X={self.obstacleX}, Y={self.obstacleY}, change={self.obstacleX_change})'
obstacle_list = []
while len(obstacle_list) < 5:
obstacle = Obstacle() # call the class to create an instance
obstacle_list.append(obstacle)
print(obstacle)
Obstacle(image='rock.png', X=650, Y=62, change=-0.3)
Obstacle(image='rock.png', X=677, Y=8, change=-0.3)
Obstacle(image='rock.png', X=625, Y=370, change=-0.3)
Obstacle(image='rock.png', X=642, Y=536, change=-0.3)
Obstacle(image='rock.png', X=688, Y=311, change=-0.3)
推荐阅读
- java - 将自然语言句子转换为机器可读格式的最佳方法?
- java - ArrayList 返回我添加的最后一个值
- javascript - 减少 React 中多个元素的相同功能的代码
- javascript - 如何使用 emscripten 构建大型 C++ 库?
- github-pages - 如何让 GitHub 页面为我的 www 子域提供正确的 SSL 证书
- field - 字段表单的附加字段,D8
- java - 为什么 getWindow() 说它找不到符号?
- c++ - 如何围绕std :: move构建unique_ptrs的二叉树?
- scikit-learn - sklearn 线性回归:如何在预测器中同时拟合单热编码变量和数值变量?
- java - Spring Redis Stream 消费者停止消费消息(地址已在使用中)