首页 > 解决方案 > 错误的结果打印到控制台

问题描述

我有以下代码,应该将 3500.0 打印到控制台:

class Employee:
    
    """ Creates an instance of Employee """
    
    def __init__(self, name, annual_salary):
        self.name = name
        self.annual_salary = annual_salary
        
    def calculate_monthly_salary(self):
        return annual_salary / 0.12
        

class CustomerServiceEmployee(Employee):
    
    """ Creates an instance of CustomerServiceEmployee """
    
    def __init__(self, name, annual_salary, department):
        super().__init__(name, annual_salary)
        self.department = department

cs_manager = CustomerServiceEmployee("Kelly Johnson", 42000, "Customer Service")
kellys_monthly_salary = Employee.calculate_monthly_salary
print(kellys_monthly_salary)

但它会打印:

<function Employee.calculate_monthly_salary at 0x7fdfb1db31f0>

我被引导相信我的问题在于方法calculate_monthly_salary,但我无法终生解决。有人可以解释一下吗?

标签: pythonmethodssuperpython-class

解决方案


首先,您已经创建了一个对象CustomerServiceEmployee并将其存储在cs_manager. 那么为什么不使用它呢?

kellys_monthly_salary = cs_manager.calculate_monthly_salary()

line 10应该有self

self.annual_salary 

完整代码

class Employee:
    
    """ Creates an instance of Employee """
    
    def __init__(self, name, annual_salary):
        self.name = name
        self.annual_salary = annual_salary
        
    def calculate_monthly_salary(self):
        return self.annual_salary / 0.12
        

class CustomerServiceEmployee(Employee):
    
    """ Creates an instance of CustomerServiceEmployee """
    
    def __init__(self, name, annual_salary, department):
        super().__init__(name, annual_salary)
        self.department = department

cs_manager = CustomerServiceEmployee("Kelly Johnson", 42000, "Customer Service")
kellys_monthly_salary = cs_manager.calculate_monthly_salary()
print(kellys_monthly_salary)

推荐阅读