В коде:
class User:
UserName
Password
UserName
и Password
обрабатываются как выражения. Так как они не были назначены на данный момент, вы получаете NameError
.
В Python переменная должна быть определена с помощью инструкции присваивания, прежде чем ее можно будет использовать в выражении, иначе вы получите NameError. Обратите внимание, что «before» здесь означает «порядок выполнения», а не «порядок исходного кода». Это немного больше (импорт операторов, глобалы, хакеры пространства имен), но давайте оставим это здесь просто.
Идиоматический способ определения переменной «без значения» - присвоить ей значение None
.
Кроме того, ваш код выглядит так, как будто он действительно хочет членов экземпляра, а не членов класса.Идиоматический способ сделать это, как это было признан некоторыми инструментами статического анализа, таких как pylint
, является:
class User(object):
def __init__(self):
self.username = None
self.password = None
Кроме того, это хороший стиль Python, чтобы получить все классы от «объекта», так что вы используете классы нового стиля , и для того чтобы назвать переменную экземпляра с нижним регистром case_with_underscore или initialLowerWithCaps. Стиль InitialCaps довольно универсален для имен классов.
Учебник Python находится здесь: http://docs.python.org/tutorial/index.html Это очень хорошо, если вы уже делали программирование раньше. –
Зачем вам это нужно? – sykora
Фраза «без переменной», вероятно, должна была быть «без значения». –