Person Class повторяет одни и те же данные - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь создать класс под названием «Человек», просто добавляя пользователей по имени, фамилии, возрасту и стране, включая идентификатор автоматической нумерации. Несмотря на то, что при вводе данных все данные отображаются неоднократно, и я хочу, чтобы идентификатор увеличивался на 1, например, пользователь 1 принадлежит идентификатору 1, пользователь 2 - идентификатору 2 и т. Д.

КакЯ хочу, чтобы моя программа работала:

------------------------------
ID: 1
FIRST NAME: John
LAST NAME: Smith
AGE: 32
COUNTRY: United Kingdom
------------------------------
------------------------------
ID: 2 
FIRST NAME: Amanda
LAST NAME: Smith
AGE: 56
COUNTRY: Germany
------------------------------

Как отображается моя программа:

Enter First Name: John
Enter Last Name: Smith
Enter Age: 32
Enter Country: United Kindom
Add another person? Y or N: N
Finished
------------------------------
ID: 1
FIRST NAME: John
LAST NAME: Smith
AGE: 32
COUNTRY: United Kingdom
------------------------------
------------------------------
ID: 1
FIRST NAME: John
LAST NAME: Smith
AGE: 32
COUNTRY: United Kingdom
------------------------------

Может ли кто-нибудь указать мне, куда я идуздесь не так? или Как я мог решить мою проблему?

Мой код Python:

class Person:
    personid = 0

    def __init__(self, firstname, lastname, age, country):
        self.personid =+ 1
        self.firstname = firstname
        self.lastname = lastname
        self.age = age
        self.country = country

    def addPerson(self):
        person = []
        person.append(self.personid)
        person.append(self.firstname)
        person.append(self.lastname)
        person.append(self.age)
        person.append(self.country)

    def displayPeople(self):
        print("-" * 30)
        print("PERSON ID: ",self.personid)
        print('FIRST NAME:',self.firstname,'\nLAST 
        NAME:',self.lastname,'\nAGE:',self.age,'\nCOUNTRY:',self.country)
        print("-" * 30)

    def addAnotherPerson(self):
        option = input("Add another person? Y or N: ")
        if option == "Y":
            Person(
                firstname=input("Enter First Name: "),
                lastname=input("Enter Last Name: "),
                age=input("Enter Age: "),
                country=input("Enter Country: ")
            )
            Person.addAnotherPerson(self)
            Person.displayPeople(self)
        else:
            print("Finished")
            Person.displayPeople(self)

 perx = Person(
    firstname = input("Enter First Name: "),
    lastname = input("Enter Last Name: "),
    age = input("Enter Age: "),
    country = input("Enter Country: ")
 )
 perx.addPerson()
 perx.displayPeople()
 perx.addAnotherPerson()

1 Ответ

0 голосов
/ 08 ноября 2019

В дополнение к вышеприведенным комментариям:

Для продвижения person_id вы хотите явно обновить class член, а не член экземпляра.

Thisэто то, что вам нужно:

class Person:
    cls_personid = 0

    def __init__(self, firstname, lastname, age, country):
        type(self).cls_personid += 1

        self.personid = self.cls_personid
        self.firstname = firstname
        self.lastname = lastname
        self.age = age
        self.country = country


a = Person('a1','b1', 11, 'xyz')
b = Person('a2','b2', 12, 'xyz')
print(a.personid)  # -> 1
print(b.personid)  # -> 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...