You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为多个类创建调用函数:Python类继承代码两行问题排查

修复你的Python类代码问题

嘿,我瞅了下你的代码,两处问题其实很容易搞定,咱们一步步来:

问题1:fullName方法的print语句

你原来的代码里print self.firstName +' '+self.lastName在Python 3里会报错,因为print是内置函数,必须加括号。而且如果这个方法的目的是返回全名(而不是直接打印出来),用return会更灵活——毕竟有时候我们需要把全名存起来或者用来做其他操作,而不是直接输出到控制台。

修改方案二选一:

  • 如果你就是要打印全名:
    def fullName(self):
        print(self.firstName + ' ' + self.lastName)
    
  • 如果你想返回全名供后续使用(更推荐):
    def fullName(self):
        return f"{self.firstName} {self.lastName}"
    
    (用f-string拼接字符串比加号更简洁易读哦)

问题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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:15:22