首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向init和create instance添加参数

向init和create instance添加参数
EN

Stack Overflow用户
提问于 2021-03-19 20:09:12
回答 1查看 31关注 0票数 1

我想让我的类的两个变量成为动态的,这样它们就有不同的值,这取决于为游戏选择的难度。我是不是在__init__中做错了什么,或者问题出在哪里?如果我从__init__中删除两个参数speed_top_border, speed_bottom_border并输入静态值,一切都会正常工作。

代码语言:javascript
运行
复制
# Obstacle class
class Obstacle(object):

    # Init
    def __init__(self, speed_top_border, speed_bottom_border):
        self.obstacleImg = 'rock.png'
        self.obstacleX = random.randint(700, 800)
        self.obstacleY = random.randint(0, ScreenHeight - 64)
        self.obstacleX_change = random.uniform(self.speed_top_border, self.speed_bottom_border)

# Keep window running (Infinite-Loop)
running = 1

# Menu-loop
while running == 1:

    # Insert Background
    screen1.blit(background, (0, 0))

    for event in pygame.event.get():

        # Quit game
        if event.type == pygame.QUIT:
            running = 0

        if event.type == pygame.KEYDOWN:

            # Difficulty easy
            if event.key == pygame.K_1:
                speed_top_border = -1
                speed_bottom_border = -0.5

            # Start game
            if event.key == pygame.K_SPACE:
                running = 2

# Game While-Loop
    while running == 2:

# Creation of instancet of class obstacle each iteration
        if timer1_current - timer1_start >= interval:
            timer1_start = time.time()  # Timer of start set to current time
            obstacle = Obstacle(speed_top_border, speed_bottom_border)  # Create instance of class obstacle
            obstacle_list.append(obstacle)  # Append instance to list
            print(obstacle)  # Print created instance for check
            score += 100 * score_multiplier  # Increase score

错误消息

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "C:\Users\Timo\PycharmProjects\2DFlugzeugspiel\main.py", line 221, in <module>
    obstacle = Obstacle(speed_top_border, speed_bottom_border)  # Create instance of class obstacle
  File "C:\Users\Timo\PycharmProjects\2DFlugzeugspiel\main.py", line 89, in __init__
    self.obstacleX_change = random.uniform(self.speed_top_border, self.speed_bottom_border)
AttributeError: 'Obstacle' object has no attribute 'speed_top_border'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-19 20:17:20

您永远不会在__init__中定义self.speed_top_borderself.speed_bottom_border,而是尝试在self.obstacleX_change = random.uniform(self.speed_top_border, self.speed_bottom_border)中使用它们

如果要使用这些属性,请在使用它们之前对其进行定义

代码语言:javascript
运行
复制
class Obstacle(object):

    def __init__(self, speed_top_border, speed_bottom_border):
        self.obstacleImg = 'rock.png'
        self.obstacleX = random.randint(700, 800)
        self.obstacleY = random.randint(0, ScreenHeight - 64)
        self.speed_top_border = speed_top_border
        self.speed_bottom_border = speed_bottom_border
        self.obstacleX_change = random.uniform(self.speed_top_border, self.speed_bottom_border)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66707913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档