【问题标题】:wrong result printed to the console错误的结果打印到控制台
【发布时间】:2021-08-24 02:43:46
【问题描述】:

我有以下代码,应该将 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 但我终其一生都无法解决。有没有人能解释一下?

【问题讨论】:

    标签: python methods super python-class


    【解决方案1】:

    首先,您已经为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)
    

    【讨论】:

    • 啊!在第 10 行错过了自己(我在等待像你这样的好撒玛利亚人时修复了这个问题!)但我没有想到将对象用于 CustomerServiceEmployee - 你太神奇了!非常感谢你,它工作得很好,干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 2019-03-01
    相关资源
    最近更新 更多