Ошибка имени: имя «self» не определено — это проблема с различием версий?

#python #python-3.x

#python #python-3.x

Вопрос:

Я изучаю python. когда я запускаю приведенные ниже примеры кодов в книге, возникает ошибка, даже если код точно такой же, как в книге.

Я пытался найти решение в Google, но для меня не было подсказки.

die.py

 from random import randint

class Die():
    """A class representing a single die."""

    def __init__(sefl, num_sides=6):
        """Assume a six-sided die."""
        self.num_sides = num_sides

    def roll(self):
        """Return a random value between 1 and number of sides."""
        return randint(1, self.num_sides)
 

die_visual.py

 from die import Die

# Create a D6.
die = Die()

# Make some rolls, and store results in a list.
results = []
for roll_num in range(100):
    result = die.roll()
    results.append(result)

print(results)
 

он должен показать мне случайный список игральных кубиков.

Комментарии:

1. Опечатка: вы написали sefl вместо self в своих __init__ параметрах.

2. это sefl ошибка или ваш фактический код?

3. Если это точно так же, как в книге, в вашей книге есть опечатка.

4. Ничего общего с версиями. Это опечатка в любой версии Python.

5. На самом деле это хорошая демонстрация, которая self представляет собой соглашение об именовании первого параметра метода в Python, а не принудительную функцию. Вы могли бы использовать sefl.num_sides = num_sides , и это сработало бы. (Впрочем, не надо.)