我正在尝试使用for
循环访问列表中的第6个元素(通过不同的类方法)。
列表将包含以下内容:
personalInfo = ['firstName', 'lastName', 'email', 'password', 'birthdate', 'alias']
这是我正在尝试获取别名的代码,因此导致我需要获取密码:
编辑:刚决定包括整个班级,以防万一我错过任何小事。
class Account:
accountInfo = {}
def __init__(self):
choice = raw_input("Would you like to login or signup?\n")
if choice.lower() == "login":
self.login()
elif choice.lower() == "signup":
print "Great! Fill in the following."
self.signup()
else:
self.__init__()
def signup(self):
accountID = '%010x' % random.randrange(16**10)
personalInfo = []
firstName = raw_input("First Name: ")
lastName = raw_input("Last Name: ")
email = raw_input("E-Mail: ")
password = raw_input("Password: ")
birthdate = raw_input("DOB (DD/MM/YYYY): ")
alias = raw_input("Username/Alias: ")
personalInfo.append(firstName)
personalInfo.append(lastName)
personalInfo.append(email)
personalInfo.append(password)
personalInfo.append(birthdate)
personalInfo.append(alias)
self.accountInfo[accountID] = personalInfo
self.personalInfo = personalInfo
print self.accountInfo
def login(self):
self.alias = raw_input("Username/Alias: ")
for i in self.personalInfo:
if self.alias == self.personalInfo[5]:
self.password = raw_input("Password: ")
if self.password == True:
print "You have successfully logged on."
else:
self.password
else:
self.password
print self.alias, self.password
这是我得到的错误:
File "liveShare.py", line 122, in login
for i in self.personalInfo:
AttributeError: Account instance has no attribute 'personalInfo'
此外,如果我的某些代码在逻辑上不合理,我也深表歉意。我对此并不陌生,因此可能存在一些明显的错误,但是请撕碎我,明智地切细批评。我想学习正确的方法。
感谢所有帮助:)
答案 0 :(得分:0)
我认为您可以使用此方法访问另一个Class的属性
class Foo:
def __init__(self, args):
self.personalInfo = args
def print_Info(self):
print self.personalInfo
foo = Foo(['firstName', 'lastName', 'email', 'password', 'birthdate', 'alias'])
print_Info(foo)
答案 1 :(得分:0)
您没有显示Account类的 init 方法(应该在类声明之后),但是请确保在参数中明确定义了变量名。这将确保其正确命名并传递给以下方法。
def __init__(personalInfo=[]):
self.personalInfo = personalInfo
..
#then later (or in another script that imports Account):
acct = Account(['John', 'Doe', 'email', 'password', '1/1/99', 'JohnDoe Alias'])