【发布时间】:2018-01-22 19:33:13
【问题描述】:
Sup,我正在做一个小帐户注册只是为了学习建议。
我创建了一个名为 Accounts 的类,并使用了许多不同的功能。有了之前的确认,我知道我需要从一个名为def __init__(self)的函数启动它们
class Account:
def __init__(self):
self.contas = {}
self.bancodecontas = open("x.txt", 'r')
def getaccounts(self):
for linha in self.bancodecontas:
linha = linha.strip()
conta = linha.split(",")
login = conta[0]
senha = conta[1]
self.contas[login] = senha
def accountsprinting(self):
for login, senha in self.contas.items():
print("Login= ", login, "Senha= ", senha)
getaccounts() 工作正常,我在最后测试了一个print(self.contas),它从我的 x.txt 中打印了所有帐户。当我需要调用accountsprinting() 时,问题就开始了,我尝试用print(self.contas) 开始它,但显示的是一个空字典,这意味着它没有访问“新”self.contas。我在不同类型的项目中做了完全相同的事情并且效果很好,我知道我在这里遗漏了一些非常明显的东西,所以我事先为我缺乏关注而道歉。
感谢您的时间,良好的编码。
编辑 1
人们要求整个程序,这是我的整个程序。我正在使用 PyCharm,我将其创建为 accounts.py、根文件或资源文件,我将把这个类导入另一个 main.py 以使用相应的功能。我知道我必须先调用Accounts().getaccounts(),然后我必须调用其他函数,所以我可以先填写我的“帐户数据库”。即使这样做:
将print(self.contas) 添加到getaccounts() 的末尾和accountsprinting() 的开头
在同一个 .py 上做:
Account().getaccounts()
Account().accountsprinting()
或者在不同的 .py 上做:
from AccountManager import Account
Account().getaccounts()
Account().accountsprinting()
输出是一样的:
{'Bruno': '666', 'Bruno2': '444', 'Pedro': '2222a', 'Breno': '092b'}
{}
编辑 2
添加self.getaccounts()到def __init__(self)正如@Darkonaut所说,确实有效,在同一个.py上,甚至从另一个.py导入,但我想了解为什么没有它,它不起作用,对我来说没有意义。
非常感谢 =)
【问题讨论】:
-
请提供一个简短的完整程序来演示错误。请参阅minimal reproducible example 了解更多信息。
-
例如,当我创建一个short complete program 时,它工作正常。由于您发布的代码可以正常工作,因此问题一定出在您没有发布的代码上。
标签: python function class dictionary object-oriented-database