簡體   English   中英

超類和子類方法中的計算Python

[英]Calculations In Superclass and Subclass Methods Python

我試圖弄清楚如何在我的程序中計算每周工資。 要計算每周工資,我必須將工作時間乘以每小時工資。 到目前為止,我還無法計算工資。 我收到以下錯誤消息:

AttributeError: 'Employees' object has no attribute '_Employees__weeklyPay'

我想要一些關於如何在類內部計算方法的建議,然后在子類中重復它。

'''

class Employees:

# Employees Class 
def __init__(self, name):
    self.__name = name
    self.__hoursWorked = 0
    self.__hourlyPay = 0

def set_name(self, name):
    self.__name = name

def set_hoursWorked(self, hoursWorked):
    self.__hoursWorked = hoursWorked

def set_hourlyPay(self, hourlyPay):
    self.__hourlyPay = hourlyPay

def calc_weeklyPay(self, hoursWorked, hourlyPay):
    self.__weeklyPay =  self.__hoursWorked * self.__hourlyPay
    return self.__weeklyPay


# def get_weeklyPay(self):
#    return self.__weekly_pay

def get_name(self):
   return self.__name

def get_hoursWorked(self):
    return self.__hoursWorked

def get_hourlyPay(self):
    return self.__hourlyPay

def __str__(self):
    return '\n' + "Employee Data: " \
        '\n' + 'The employee name is: ' + str(self.__name) + \
        '\n' + 'The employee hourly pay is: ' + str(self.__hourlyPay) + \
        '\n' + 'The employee hours worked is: ' + str(self.__hoursWorked) + \
        '\n' + 'The employee weekly pay is: ' + str(self.__weeklyPay())

'''

'''

 starEmployee = Employees.Employees("name")
        starEmployee.set_name(input("Enter the name of the employee: "))
        starEmployee.set_hourlyPay(float(input("Enter " + employee1.get_name() + "\'s" +  " hourly 
pay : ")))
        starEmployee.set_hoursWorked(int(input("Enter " + employee1.get_name() + "\'s" +  " hours 
worked: ")))
        print(starEmployee.__str__())

'''

我們可以直接從您的父類中的屬性進行計算。 然后,它被子類繼承。

class Employee:
  def __init__(self, name, hours_worked, hourly_pay):
    self.name = name
    self.hours_worked = hours_worked
    self.hourly_pay = hourly_pay
    self.weekly_pay = hourly_pay*hours_worked


  def __str__(self):
    return 'name: {}\nhours_worked: {}\nhourly_pay: {}\nweekly_pay: {}'.format(self.name, self.hours_worked, self.hourly_pay, self.weekly_pay)

employee_1 = Employee('James', 40, 10)

print(employee_1)

這是進行計算的主要父類。 這是回報:

name: James
hours_worked: 40
hourly_pay: 10
weekly_pay: 400

這是一個傳遞父類屬性的子類示例。 您可以在此處添加其他屬性,並且不會更改您的Parent類。 作為使用super功能的示例,您可以看到可以從Parent類設置屬性:

class Manager(Employee):
  def __init__(self):
    super().__init__('John', 50, 20)

  def __str__(self):
    return 'name: {}\nhours_worked: {}\nhourly_pay: {}\nweekly_pay: {}'.format(self.name, self.hours_worked, self.hourly_pay, self.weekly_pay)

manager_1 = Manager()

print(manager_1)

返回:

name: John
hours_worked: 50
hourly_pay: 20
weekly_pay: 1000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM