【问题标题】:Why do I need a value for self here?为什么我在这里需要一个自我价值?
【发布时间】:2019-10-10 18:14:54
【问题描述】:

嘿,我是 python 新手,尝试编写一个简单的登录模块来加盐密码

当我使用这个类时,我得到以下错误:

TypeError: salting() 缺少 1 个必需的位置参数:'password'

class Login():
    def salting(self, username, password):
        self.password = password
        self.username = username

        print(self.username + self.password)

Login.salting("user1","pw1")

我唯一的解决方案是使用 Login.salting("","user1","pw1") 和一个空字符串作为 self 或调用 self 作为用户名 end 像这样重用它,但我认为我遇到了一个错误, 谁能帮帮我:D

但是当我将它与我之前的代码进行比较时(我从这段代码中了解到) - 没有出现错误......

class car():
    name = "BMW"
    color = "red"
    def redesign(self, color):
        self.color = color
c = car()
print(c.name)
print(c.color)
c.redesign("blue")
print(c.color)

谢谢

【问题讨论】:

  • 你必须先实例化类:user = Login(),然后使用user.salting(username, password)

标签: python class self


【解决方案1】:

salting 是对象方法,而不是类方法。每个对象都有自己的usernamepassword 属性。你需要创建一个Login 对象,然后调用它的方法。

s = Login()
s.salting("user1", "pw2")

这类似于在第二个代码块中使用c = car()

【讨论】:

  • 类和函数定义没有变化,只是用这两行替换最后一行。
  • @MrLufus,Barmar 的意思是你必须实例化你的Login 类(创建一个Login 类型的对象)然后在对象上调用salting(),而不是类。
  • 在进行面向对象编程时,通常会创建对象。
  • Login() 返回一个对象,然后您调用该对象的方法,就像s.salting() 所做的那样。
  • 这只是基本的编程。 func1().func2()var = func1() 相同,后跟 var.func2()
猜你喜欢
  • 2020-10-31
  • 2010-11-10
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 2011-01-09
  • 2016-02-15
  • 2020-09-30
  • 1970-01-01
相关资源
最近更新 更多