为多个类创建调用函数

2024-10-01 04:44:53 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我让我的代码正常工作,但是有两行代码把我搞砸了,不知道该放什么。在

代码(两行有标记):

class Person(object):
    numPerson = 0
    def __init__(self,firstName,lastName):
        self.firstName = firstName
        self.lastName = lastName
    def fullName(self):
        print self.firstName +' '+self.lastName

class Employee(Person):
    numEmployee = 0
    def __init__(self,firstName,lastName,pay,employID):
        Person.__init__(self, firstName, lastName)
        self.pay = pay
        self.employID = employID
        Employee.numEmployee += 1

class Programmer(Employee):
    def __init__(self,firstName,lastName,pay,employID,proLang):
        self.proLang = proLang
        Employee.__init__(self, firstName, lastName, pay, employID)

class Manager(Employee):
    def __init__(self,firstName,lastName,pay,employID,progList):
        self.progList = progList
        Employee.__init__(self, firstName, lastName, pay, employID)
    def addProgrammer(self):
        self.progList.append(Programmer.fullName) <------------------- This line
    def removeProgrammer(self):
        if len(self.progList) == 0:
            pass
        else:
            del self.progList[0]
    def printList(self):
        print self.progList

a = Manager('Alfred','Jones',20.00,0001,[])
b = Programmer('James','Smith', 11.75, 0002, 'Java')
a.addProgrammer() <--------------------------------------------- And This line
a.printList()

我试图使用.addProgramer方法将程序员的名字添加到progList中。我一直在尝试不同的组合,这是最接近我的。在

输出:

^{pr2}$

因此,我不确定要在addProgramer方法中包含什么才能正确地添加程序员名称,或者我是否需要在结尾的a.addProgrammer内添加一个参数。在


Tags: 代码selfinitdefemployeefirstnamepayclass
1条回答
网友
1楼 · 发布于 2024-10-01 04:44:53

这里:

self.progList.append(Programmer.fullName)

你不是在添加一个程序员的实例,而是从programmer类中添加一个方法。在

同时:

^{pr2}$

这实际上并没有返回程序员的名字,它只是将它打印到控制台。要实际输出并使用所需的全名return self.firstName + ' ' + self.lastName

同样,在该函数中,您还需要指定要添加的程序员:

def addProgrammer(self, added_programmer):
    self.progList.append(added_programmer.fullName()) # Call the function to get the fullname

现在添加一个程序员:

Alfred = Manager('Alfred','Jones',20.00,0001,[]) #make a manager     
James = Programmer('James','Smith', 11.75, 0002, 'Java') #make a programmer
Alfred.addProgrammer(James) #add the programmer
Alfred.printList()

把这些放在一起:

class Person(object):
    numPerson = 0
    def __init__(self,firstName,lastName):
        self.firstName = firstName
        self.lastName = lastName
    def fullName(self):
        return self.firstName +' '+self.lastName

class Employee(Person):
    numEmployee = 0
    def __init__(self,firstName,lastName,pay,employID):
        Person.__init__(self, firstName, lastName)
        self.pay = pay
        self.employID = employID
        Employee.numEmployee += 1

class Programmer(Employee):
    def __init__(self,firstName,lastName,pay,employID,proLang):
        self.proLang = proLang
        Employee.__init__(self, firstName, lastName, pay, employID)

class Manager(Employee):
    def __init__(self,firstName,lastName,pay,employID,progList):
        self.progList = progList
        Employee.__init__(self, firstName, lastName, pay, employID)
    def addProgrammer(self, added_programmer):
        self.progList.append(added_programmer.fullName()) # Call the function to get the fullname
    def removeProgrammer(self):
        if len(self.progList) == 0:
            pass
        else:
            del self.progList[0]
    def printList(self):
        print self.progList

Alfred = Manager('Alfred','Jones',20.00,1,[])       
James = Programmer('James','Smith', 11.75, 2, 'Java')
Alfred.addProgrammer(James)
Alfred.printList()

相关问题 更多 >