gpt4 book ai didi

Pythons 的 AttributeError : 'NoneType' object has no attribute 'errors'

转载 作者:太空宇宙 更新时间:2023-11-03 13:04:28 26 4
gpt4 key购买 nike

我知道它已经来过这里很多次了,但我没有找到适合我的情况的正确答案。
首先: 我正在制作一个简单的数据库系统(为我自己),它将在没有散列等的情况下运行(至少现在是这样)。现在我卡住了。

import sys
import os

filename = ""
database = ""
path = ""
table = ""

class Nollty:
returns = 0
errors = 0

def __init__(self, filename, database):
self.filename = filename
self.database = database
self.path = self.filename + "databases/" + self.database
openfile = open(self.path + "/db_required", "r")
if not openfile.errors:
self.returns = 1
if not os.path.exists(self.path + "/db_required"):
self.returns = 0
openfile.close();

def select(self, table):
errors = 0
self.table = table
openfile = open(self.path + "/" + self.table, "r")
if not openfile.errors:
errors = 1
if not os.path.exists(self.path + "/" + self.table):
errors = 0
openfile.close();


nollty = Nollty("", "test")
if nollty.returns == 1:
print "Successfully connected to the database!"

query = nollty.select("aaa_auto")
if query.errors == 0:
print "Successfully chosen the table!"

错误输出为:

Traceback (most recent call last):
File "/home/spotrudloff/Python/Nollty/nollty.py", line 40, in <module>
if query.errors == 0:
AttributeError: 'NoneType' object has no attribute 'errors'

问题可能是我是PHP程序员,今天几个小时就学会了Python(所以我的思路还是“PHPy”)。

感谢大家的回复。

最佳答案

您使用returnserrors 作为类变量似乎不是一个好主意。无论您创建多少个 Nollty 实例,每个变量都只有 一个 实例。相反,这样做:

def __init__(self, filename, database):
self.returns = 0
self.errors = 0
# rest of __init__

接下来,使用returns 来指示返回值似乎也不是一个好主意。在 Python 中,通常会引发一个异常 来指示构造函数中的问题。这样,调用者就不能通过忘记检查 returns 来简单地忽略问题。

类似地,使用 select() 的异常来指示参数有问题。我的建议是消除返回错误

您也没有从 select 返回任何值,所以这就是 query 最终成为 None 的原因(在 Python 中,None 是一个特殊值)。您要么希望从 select() 返回一些有用的东西,要么如果它没有返回有用的值,则不要将其结果分配给任何东西。

关于Pythons 的 AttributeError : 'NoneType' object has no attribute 'errors' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8859433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com