Как инициализировать несколько объектов с помощью цикла и принимать разные пользовательские данные для каждого объекта? - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь создать программу, которая спросит, сколько человек, создаст объект для каждого человека и получит отдельную информацию от пользователя (например, имя, еженедельно, зарплата) для каждого объекта. Таким образом, я могу просто ввести информацию о сотрудниках, и для каждого из них можно рассчитать зарплату.

До сих пор мне удавалось создать только два отдельных объекта и класса для каждого человека, и мне пришлось бы добавлять каждого человека вручную, чтобы выполнить более одного. Также на данный момент это позволяет мне иметь только 2 человека. Я хотел бы спросить пользователя, сколько человек, а затем иметь объект для каждого со своими индивидуальными переменными / информацией.

class SalesPerson1:
    def __init__(self, name1 = '', weeklyhrs1 = 0, wage1 = 0):
        self.name1 = input('Enter the first employees name?')
        self.weeklyhrs1 = input('Enter the first employees number of weekly hours?')
        self.wage1 = input('Enter the first employees weekly wage?')
    def salesPerson1(self):
        return self.name1
        return self.weeklyhrs1
        return self.wage1
class SalesPerson2:
    def __init__(self, name2 = '', weeklyhrs2 = 0, wage2 = 0):
        self.name2 = input('Enter the second employees name?')
        self.weeklyhrs2 = input('Enter the second employees number of weekly hours?')
        self.wage2 = input('Enter the second employees weekly wage?')
    def salesPerson2(self):
        return self.name2
        return self.weeklyhrs2
        return self.wage2

person1 = SalesPerson1()
person2 = SalesPerson2()

Ответы [ 3 ]

0 голосов
/ 05 мая 2019

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

class SalesPerson:
    def __init__(self):
        self.name1 = []
        self.weeklyhrs1 = []
        self.wage1 =[]

    def add_name(self,name):
        self.name1.append(name)

    def add_weeklyhrs(self,weeklyhrs):
        self.weeklyhrs1.append(weeklyhrs)

    def add_wage(self,wage):
        self.wage1.append(wage)

    def show_name(self):
        return self.name1

    def show_weeklyhrs1(self):
        return self.weeklyhrs1

    def show_wage1(self):
        return self.wage1

t = int(input('no of person you want to take input : '))

x=SalesPerson()

for i in range(t):

    print("enter details for {} person".format(i+1))

    x.add_name(input('enter name '))
    x.add_weeklyhrs(input('enter hours '))
    x.add_wage(input('enter wage  '))
0 голосов
/ 05 мая 2019

Вы должны создать один класс и использовать цикл для запуска input(), а также для создания экземпляра этого класса и добавления в список

class SalesPerson:

    def __init__(self, name='', weeklyhrs=0, wage=0):
        self.name = name
        self.weeklyhrs = weeklyhrs
        self.wage = wage

    def get(self):
        return self.name, self.weeklyhrs, self.wage

# list to keep all persons

all_persons = []

# get all persons

how_many = input('How many persons?')

for x in range(how_many):
    a = input('Enter the first employees name?')
    b = input('Enter the first employees number of weekly hours?')
    c = input('Enter the first employees weekly wage?')

    person = SalesPerson(a, b, c)

    all_persons.append(person)

# display all persons

for person in all_persons:
    print(person.get())
0 голосов
/ 05 мая 2019

Похоже, вам нужно читать по классам Python.Документы: здесь

В экземпляре класса используется обозначение функции.Просто представьте, что объект класса является функцией без параметров, которая возвращает новый экземпляр класса.Например (при условии вышеупомянутого класса):

x = MyClass()

создает новый экземпляр класса и назначает этот объект локальномупеременная х.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...