Как использовать if / elif внутри класса, когда вам нужны разные параметры?

Топ-2 ответов на оба упомянутых == означает равенство и === означает идентификатор. К сожалению, это утверждение неверно.

Если оба операнда из == являются объектами, то их сравнивают, чтобы увидеть, являются ли они одним и тем же объектом. Если оба операнда указывают на один и тот же объект, то оператор равенства возвращает true. В противном случае они не равны.

var a = [1, 2, 3];  
var b = [1, 2, 3];  
console.log(a == b)  // false  
console.log(a === b) // false  

В приведенном выше коде оба == и === получают false, потому что a и b не являются одинаковыми объектами.

То есть: если оба операнда = = - объекты, == ведет себя так же, как ===, что также означает идентификацию. Существенным отличием этих двух операторов является преобразование типов. == имеет преобразование, прежде чем оно проверит равенство, но === не делает.

1
задан TrebledJ 24 March 2019 в 06:22
поделиться

1 ответ

Сообщение об ошибке

имя 'K_w' не определено

, потому что вы забыли пространство имен модуля.

Имя константы pygame.K_w, а не K_w. Константы помещаются в пространство имен модуля pygame.

Либо используйте полное имя константы :

w = control().button(pygame.K_w)

, либо импортируйте константы pygame. См. pygame.locals

. ]
from pygame.locals import *

# [...]

w = control().button(K_w)

Кроме того, переменные w никогда не определяются, потому что control() генерирует объект, но button() не возвращает никакого значения. Кнопка метода должна вернуть self:

class control():
    def button(self, button):
        self.button = button
        return self

Но я рекомендую реализовать конструктор в классе control, а не в методе button (Конечно, вы можете сделать и то и другое):

class control():
    def __init__(self, button=0):
        self.button = button

ctrl = control()
w = control(K_w)
s = control(K_s)
UP = control(K_UP)
DOWN = control(K_DOWN)

Метод key должен вернуть новое значение параметра axis:

class control():

    # [...]

    def key(self, axis, speed):
        if event.type == pygame.KEYDOWN:
            if event.key == self.button:
                axis = speed
        return axis

y1, y2 = 0, 0
while True:
    for event in pygame.event.get():
        ctrl.exit()  
        y1 = w.key(y1, -5)
        y1 = s.key(y1, +5)
        y2 = UP.key(y2, -5)
        Y2 = DOWN.key(y2, +5)
0
ответ дан Rabbid76 24 March 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: