python内部类self

iq0todco  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(401)

内部类does方法需要一个自变量,但它已被给定。其主要思想是拥有一个类似django数据库模型的模块。有一个包含用户数据的用户类,并用同一个类查询所有结果

  1. class User:
  2. def __init__(self, name, password):
  3. self.name = name
  4. self.password = sha256.encrypt(password)
  5. def verify_password(self, psw):
  6. return sha256.verify(self.password, psw)
  7. def save(self):
  8. cur.execute("INSERT INTO user (name, password) VALUES (?,?)", (self.name, self.password))
  9. conn.commit()
  10. class query(object):
  11. def __init__(self):
  12. self.data = cur.execute("SELECT * from user")
  13. self.test = "test"
  14. def first(self):
  15. return self.data.fetchone()
  16. def all(self):
  17. return self.data.fetchall()
  18. print(User.query.all())

我收到以下错误:

  1. Traceback (most recent call last):
  2. File "C:\Users\Zsolt\Desktop\api\model.py", line 34, in <module>
  3. print(User.query.all())
  4. TypeError: all() missing 1 required positional argument: 'self'
yhived7q

yhived7q1#

对于这个答案,我将您的代码简化为一个更通用的代码段:

  1. class A:
  2. class B:
  3. def __init__(self):
  4. print("query the database")
  5. def first(self):
  6. print("return the first match only")
  7. def all(self):
  8. print("return all matches")
  9. A.B.all()

在突出显示的行中,您永远不会创建类b的示例!标记线应为 A.B().all() 而是创建一个 A.B 然后在那个示例上调用一个方法。
注意:在代码片段中,您需要更改 User.query.all()User.query().all() .

展开查看全部

相关问题