Python: доступ к элементам списка из других методов класса - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь получить доступ к 6-му элементу в моем списке (из другого метода класса), используя цикл for.

Вот из чего состоит список:

personalInfo = ['firstName', 'lastName', 'email', 'password', 'birthdate', 'alias']

И это код, который я запускаю, чтобы попытаться получить псевдоним, что приводит к тому, что мне нужно получить пароль:

edit: Просто решил включить весь классна случай, если я что-то упущу.

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 голосов
/ 25 ноября 2018

Вы не показываете метод init класса Account (должен быть сразу после объявления класса), но убедитесь, что вы четко определяете имя переменной в аргументах.Это обеспечит правильное именование и передачу следующим методам.

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'])
0 голосов
/ 25 ноября 2018

Я думаю, что вы можете использовать этот метод, чтобы получить доступ к атрибутам другого класса

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)
...