Класс возвращается только с одним элементом в списке, а не с несколькими - PullRequest
0 голосов
/ 05 мая 2020

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

Использование Python2 .7

Вывод: ['Phyllis Lapin'] ['Roy Anderson']

Ожидается Вывод: ['Филлис Лапин', 'Пэм Бизли', 'Анджела Мартин' и т. Д. c ..]

-------------------- ---- ['Дуайт Шрут', 'Джим Халперт', 'Райан Ховард' и т. Д. c ..]

class Employee:
    num_of_emps = 0

    def __init__(self, first, last, position, sex):
        self.first = first
        self.last = last
        self.position = position
        self.sex = sex
        self.email = first + '.' + last + '@DunderMifflin.com'

        Employee.num_of_emps += 1

    def fullname(self):
        return '{} {}'.format(self.first, self.last)

    @staticmethod
    def work_today(day):
        # 0 = Monday  3 = Thursday  6 = Sunday
        if day.weekday() == 6 or day.weekday() == 3:
            return False
        return True


# MANAGER Michael

class Manager(object, Employee):
    male = []
    female = []

    def __init__(self, first, last, position, sex, employees=None):
        Employee.__init__(self, first, last, position, sex)

        if employees is None:
            self.employees = []
        else:
            self.employees = employees

        for emp in self.employees:
            if emp.sex == "M":
                self.male = [emp.fullname()]

        for emp in self.employees:
            if emp.sex == "F":
                self.female = [emp.fullname()]

    def add_emp(self, emp):
        if emp not in self.employees:
            self.employees(emp)

    def males_emps(self):
        print "_____"
        print "Male"
        print "-----"
        for emp in self.employees:
            if emp.sex == "M":
                print emp.fullname()

    def female_emps(self):
        print "______"
        print "Female"
        print "------"
        for emp in self.employees:
            if emp.sex == "F":
                print emp.fullname()

    def remove_emp(self, emp):
        if emp in self.employees:
            self.employees.remove(emp)

    def print_emp(self):
        Michael.males_emps()
        Michael.female_emps()


Dwight = Employee('Dwight', 'Schrute', 'Assistant to the Regional Manager', 'M')
Jim = Employee('Jim', 'Halpert', 'Sales Representative', 'M')
Pam = Employee('Pam', 'Beesly', 'Receptionist', 'F')
Ryan = Employee('Ryan', 'Howard', 'Temp', 'M')
Angela = Employee('Angela', 'Martin', 'Senior Accountant', 'F')
Kelly = Employee('Kelly', 'Kapoor', 'Customer Service Representative', 'F')
Toby = Employee('Toby', 'Flenderson', 'Human Resource Representative', 'M')
Creed = Employee('Creed', 'Bratton', 'Quality Assurance', 'M')
Darryl = Employee('Darryl', 'Philbin', 'Warehouse Worker', 'M')
Kevin = Employee('Kevin', 'Malone', 'Accountant', 'M')
Meredith = Employee('Meredith', 'Palmer', 'Accounting', 'F')
Oscar = Employee('Oscar', 'Martinez', 'Accountant', 'M')
Phyllis = Employee('Phyllis', 'Lapin', 'Sales Representative', 'F')
Stanley = Employee('Stanley', 'Hudson', 'Sales Representative', 'M')
Roy = Employee('Roy', 'Anderson', 'Warehouse Worker', 'M')

Michael = Manager('Michael', 'Scott', 'Regional Manager', 'M', [Dwight,
                                                                Jim,
                                                                Pam,
                                                                Ryan,
                                                                Angela,
                                                                Kelly,
                                                                Toby,
                                                                Creed,
                                                                Darryl,
                                                                Kevin,
                                                                Meredith,
                                                                Oscar,
                                                                Phyllis,
                                                                Stanley,
                                                                Roy])


print Michael.female
print Michael.male

не могли бы вы помочь, спасибо?

1 Ответ

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

Вы переопределяете поля self.male и self.female на каждой итерации, вы хотите добавить в списки новые элементы

для __init__ вашего Менеджера try:

def __init__(self, first, last, position, sex, employees=None):
    Employee.__init__(self, first, last, position, sex)

    if employees is None:
        self.employees = []
    else:
        self.employees = employees

    self.male = []
    self.female = []

    for emp in self.employees:
        if emp.sex == "M":
            self.male.append(emp.fullname())

    for emp in self.employees:
        if emp.sex == "F":
            self.female.append(emp.fullname())
...