【问题标题】:display data function for my classes always return none我的类的显示数据函数总是返回无
【发布时间】:2022-07-04 22:36:18
【问题描述】:

我正在为我的 OOP 类做一个作业,我们在其中创建一个人,然后创建该类的子类,例如员工。在我的以下代码中,当我尝试使用我的 displayData 函数在我的类中打印一些属性或变量时,我总是收到一条“无”消息,它出现在我的对象的所有属性或变量都被打印后,有人知道为什么吗?。

from dataclasses import dataclass

@dataclass

class Person:
    FirstName : str
    LastName : str
    Age : int
    Address : str
    ContactNumber : int

@dataclass

class Employee(Person):
    EmployeeID : str
    OrganizationName : str
    Position : str

@dataclass

class CommissionEmployee(Employee):
    commissionRate : float

    def calculateCommission(self):
        gross_sale = input("Please enter the gross sale amount: ")
        totalEarning = float(gross_sale) * (1 + self.commissionRate)
        return totalEarning

    def displayData(self):
        print("First Name:", self.FirstName)
        print("Last Name:", self.LastName)
        print("Age:", self.Age)
        print("Address:", self.Address)
        print("Contact Number:", self.ContactNumber)
        print("Employee ID:", self.EmployeeID)
        print("Organization Name:", self.OrganizationName)
        print("Position:", self.Position)
        print("Commission Rate:", self.commissionRate)
        print("Total Earnings:", "${:,.2f}".format(self.calculateCommission()))

@dataclass

class SalariedEmployee(Employee):
    baseSalary : float

    def CalculateNetSalary(self):
        provisionalTax = 0.13 * self.baseSalary
        insurance = 0.01 * self.baseSalary
        fedTax = 0.03 * self.baseSalary
        NetSalary = self.baseSalary - provisionalTax - insurance - fedTax
        return "${:,.2f}".format(NetSalary)

    def displayData(self):
        print("First Name:", self.FirstName)
        print("Last Name:", self.LastName)
        print("Age:", self.Age)
        print("Address:", self.Address)
        print("Contact Number:", self.ContactNumber)
        print("Employee ID:", self.EmployeeID)
        print("Organization Name:", self.OrganizationName)
        print("Position:", self.Position)
        print("Base Salary:", "${:,.2f}".format(self.baseSalary))
        print("Net Salary:", self.CalculateNetSalary())

John = SalariedEmployee("John", "Smith", 21, "21 Cool Beans Dr", 123456789, "201", "Tesla", "CEO", 100.0)

print (John.displayData())

【问题讨论】:

  • SalariedEmployee.displayData() 不返回任何内容,对吧?它没有return whatever 声明。因此,它会自动返回None

标签: python oop python-dataclasses


【解决方案1】:

您正在打印函数的值。除非您指定返回值,例如return Truereturn 72,否则打印时函数的值将始终为None。答案是不打印John.displayData(),直接运行即可。

【讨论】:

    【解决方案2】:

    您正在打印John.displayData()return value。同样在 displayData 函数中,您没有返回任何内容。检查您的函数calculateCommissionCalculateNetSalary。在这两个函数中,您将返回一些值,如果您在 print 中调用此函数,那么您在 return 语句中提到的值将被打印出来。

    在这种情况下,删除打印,只需调用displayData 函数,如下所示:

    John.displayData()
    

    【讨论】:

      猜你喜欢
      • 2013-03-25
      • 1970-01-01
      • 2021-02-18
      • 2019-12-03
      • 1970-01-01
      • 2011-08-14
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多