Python:从其他类方法访问列表元素

时间:2018-11-25 02:58:19

标签: python list class-method

我正在尝试使用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'

此外,如果我的某些代码在逻辑上不合理,我也深表歉意。我对此并不陌生,因此可能存在一些明显的错误,但是请撕碎我,明智地切细批评。我想学习正确的方法。

感谢所有帮助:)

2 个答案:

答案 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'])