为多个类创建调用函数:Python类继承代码两行问题排查
修复你的Python类代码问题
嘿,我瞅了下你的代码,两处问题其实很容易搞定,咱们一步步来:
问题1:fullName方法的print语句
你原来的代码里print self.firstName +' '+self.lastName在Python 3里会报错,因为print是内置函数,必须加括号。而且如果这个方法的目的是返回全名(而不是直接打印出来),用return会更灵活——毕竟有时候我们需要把全名存起来或者用来做其他操作,而不是直接输出到控制台。
修改方案二选一:
- 如果你就是要打印全名:
def fullName(self): print(self.firstName + ' ' + self.lastName) - 如果你想返回全名供后续使用(更推荐):
(用f-string拼接字符串比加号更简洁易读哦)def fullName(self): return f"{self.firstName} {self.lastName}"
问题2:未完成的员工数量统计代码
你代码里的Employee.numEmp...应该是想实现统计员工总数的功能对吧?咱们需要在Employee的构造方法里更新类属性numEmployee,同时别忘了Person类里的numPerson也应该在构造方法里递增——因为创建员工实例的时候,本质也是创建了一个Person实例呀。
修改后的Person和Employee构造方法:
class Person(object): numPerson = 0 def __init__(self,firstName,lastName): self.firstName = firstName self.lastName = lastName Person.numPerson += 1 # 每次创建Person实例,总人数加1 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 # 每次创建Employee实例,员工数加1
完整修正后的代码
class Person(object): numPerson = 0 def __init__(self,firstName,lastName): self.firstName = firstName self.lastName = lastName Person.numPerson += 1 def fullName(self): # 推荐返回全名,而非直接打印 return f"{self.firstName} {self.lastName}" # 如果要打印的话改成下面这行: # 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 # 测试一下 p1 = Person("John", "Doe") print(p1.fullName()) # 输出 John Doe print(Person.numPerson) # 输出 1 e1 = Employee("Jane", "Smith", 50000, "E001") print(e1.fullName()) # 输出 Jane Smith print(Employee.numEmployee) # 输出 1 print(Person.numPerson) # 输出 2,因为e1也是Person的实例
这样修改后,代码就能正常运行,并且实现了统计总人数和员工数的功能啦~
内容的提问来源于stack exchange,提问作者rippleEffect
相关产品推荐
相关产品推荐

