Python 我的班级不工作,它';s忽略变量

Python 我的班级不工作,它';s忽略变量,python,python-3.x,Python,Python 3.x,无论我将打印或user1变量放在哪里,它都会给我不同的错误。在这个设置中,它给了我“名称错误:未定义名称“user1”。我做错了什么 class gram(): def __init__(self, username, phone, email, password): self.username = username self.phone = phone self.email = email self.passwo

无论我将打印或
user1
变量放在哪里,它都会给我不同的错误。在这个设置中,它给了我
“名称错误:未定义名称“user1”
。我做错了什么

   class gram():

    def __init__(self, username, phone, email, password):

        self.username = username
        self.phone = phone
        self.email = email
        self.password = password

print(user1.username)     

user1 = gram("sdff", "sdfkmds", "wfowjfnw", "fjwknfwnw")

print(user1.username)

gram()


在您的示例中,您打印了两次
user1.username
,第一次是在定义
user1

之前。如果您的代码中有一个问题,则在尝试其他解决方案时将问题保留在中是行不通的:

class gram():
    def __init__(self, username, phone, email, password):
        self.username = username
        self.phone = phone
        self.email = email
        self.password = password

# user1 has not yet been created, so this won't work
# print(user1.username)     

user1 = gram("sdff", "sdfkmds", "wfowjfnw", "fjwknfwnw")
# This will work
print(user1.username)

# gram requires four elements to call, so this won't work
# gram()

这是因为您在下一行实际声明user1之前使用了user1。您的编辑仍然没有删除错误位置的行。当您创建类的实例时,将自动调用init方法。因此,如果您想在创建像user1这样的对象时打印某些内容或执行某些操作。你可以称之为。在本例中,如果要打印用户名。您可以在uuu init_uuuu()中使用print语句。如果我希望用户1在类中打印,或者这是一个no no?不,user1不在类的作用域中。如果要打印类的用户名,请使用
print(self.username)
。如果要从另一个实例的类内部打印用户名,请传入该实例。
class gram():

    def __init__(self, username, phone, email, password):

        self.username = username
        self.phone = phone
        self.email = email
        self.password = password

        # If you want to print username on creation then put it inside __init__()
        #print(self.username)     

user1 = gram("sdff", "sdfkmds", "wfowjfnw", "fjwknfwnw")

print(user1.username)