[英]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.