如何解决从定义的类动态创建实例
我正在尝试进行某种模拟/游戏,我想通过单击引力来创建行星。我这样做是为了了解课程和Pygame。
我上课
class planet:
planets=[]
position = np.array([100,100],dtype=float)
veLocity = np.array([ 0,0],dtype=float)
acceleration = np.array([ 0,dtype=float)
mass = 10.
def __init__(self,position = np.array([100,dtype=float),veLocity = np.array([ 0,acceleration = np.array([ 0,mass = 10.):
self.__class__.planets.append(self)
self.position = position
self.veLocity = veLocity
self.mass = mass
我正在尝试使用Pygame中的事件来创建行星,并使用鼠标位置作为行星位置/速度
while True:
screen.blit(hintergrund,(0,0))
for e in pygame.event.get():
if e.type == pygame.QUIT:
pygame.quit()
sys.exit()
if e.type == pygame.MOUSEBUTTONDOWN: #get planet position
mx,my = pygame.mouse.get_pos()
if e.type == pygame.MOUSEBUTTONUP: #get planet direction and create planet
mx2,my2 = pygame.mouse.get_pos()
我知道如何创建一个行星,或使用预先创建的行星,但是可以使用生成的名称动态创建它们吗?
解决方法
一个选择是将类对象附加到列表中,并按这样的索引访问它
list_[index] # index is an integer
另一种选择是将它们附加到字典中,这样就可以按如下名称进行访问:
planets = dict()
for i in range(your_range):
planets[f'planet_nr_{i}'] = Planet()
这样,您可以通过变量名访问每个类,如下所示:
planet = planets['planet_nr_2']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。