如何使用get和set方法在类python 3.6中设置属性的值

时间:2017-04-24 23:22:53

标签: python-3.x class properties

class Employee:

    def __init__(self,Employee_Name,Hours_Worked,Hourly_Wage):
        self.Employee_Name = Employee_Name
        self.Hours_Worked = Hours_Worked
        self.Hourly_Wage = Hourly_Wage

    def displayName(self):
        print ("Employee Name :", Employee_Name)

    def displayHoursWorked(self):
        print ("Hours Worked :", Hours_Worked)

    def displayHourlyWage(self):
        print ("Hourly Wage :", Hourly_Wage)

    def Empname(self):

    def Emppay(self):
        if Hours_Worked <= 40:
            print("Employee Pay :",Hours_Worked * Hourly_Wage)
        if Hours_Worked > 40:
            print ("Employee Pay :",((Hours_Worked - 40) * (Hourly_Wage * 1.5)) + (Hourly_Wage * 40))

Employee_Name = str(input("Employee Name :"))
Hours_Worked = int(input("Hours Worked :"))
Hourly_Wage = float(input("Hourly Wage :")) 
myEmployee = Employee(Employee_Name,Hours_Worked,Hourly_Wage)
myEmployee.displayName()
myEmployee.displayHoursWorked()
myEmployee.displayHourlyWage()
myEmployee.Emppay()
myEmployee.Empname()

我被困在家庭作业的一部分上。

我的任务是创建一个名为&#39; Employee&#39;,

的班级

(1)构造函数创建属性Employee name,Hours working and Hourly wage。

(2)我需要使用&#39; get&#39;和&#39;设置&#39;用于设置名为&#39; Empname&#39;的属性值的方法这反映了员工的姓名。

(3)我需要一种名为“Emppay&#39;计算员工的每周工资。

(4)然后,我需要让用户提供姓名,工作时间和小时工资,并创建“我的雇员”。与我的员工对话&#39;类。使用&#39; myEmployee&#39;对象打印名称,工作小时数和小时工资。使用&#39; myEmployee&#39;对象称之为'Emppay&#39;计算每周工资的方法。

(5)要求用户更改员工姓名。使用&#39; Empname&#39;属性将名称更改为新名称,并使用适当的名称打印出新名称。

第2部分和第5部分是我不知道我需要做什么的地方,我们将非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

我将Python3 class property改编为您的代码:

免责声明:这可能不是&#34; pythonic&#34;解决方案,但在其他用户提供答案之前,我会留在这里供您考虑。希望它有所帮助。

class Employee:
    def __init__(self,Employee_Name,Hours_Worked,Hourly_Wage):
        self.Employee_Name = Employee_Name
        self.Hours_Worked = Hours_Worked
        self.Hourly_Wage = Hourly_Wage

    def displayName(self):
        print ("Employee Name: ", self.Employee_Name)

    def displayHoursWorked(self):
        print ("Hours Worked: ", self.Hours_Worked)

    def displayHourlyWage(self):
        print ("Hourly Wage: ", self.Hourly_Wage)

    @property
    def Empname(self):
        print("getter of Empname called")
        return self.Employee_Name

    @Empname.setter
    def setEmpname(self, emp_name):
        print("setter of Empname called")
        self.Employee_Name = emp_name

    def Emppay(self):
        if self.Hours_Worked <= 40:
            print("Employee Pay :", self.Hours_Worked * self.Hourly_Wage)
        if self.Hours_Worked > 40:
            print ("Employee Pay :",((self.Hours_Worked - 40) * (self.Hourly_Wage * 1.5)) + (self.Hourly_Wage * 40))

name_1 = input("Employee Name: ")
hours_1 = int(input("Hours Worked: "))
hourly_wage_1 = float(input("Hourly Wage: ")) 
myEmployee = Employee(name_1,hours_1,hourly_wage_1)
myEmployee.displayName()
myEmployee.displayHoursWorked()
myEmployee.displayHourlyWage()
myEmployee.Emppay()

emp_name_change = input("What Employee name do you want to change? ")

if myEmployee.Employee_Name == emp_name_change:
    new_emp_name = input("Change {old_emp_name} to what new name? ".format(old_emp_name=emp_name_change))
    myEmployee.Employee_Name = new_emp_name
    print("{change_from}'s name changed to {change_to}".format(change_from=emp_name_change, change_to=new_emp_name))
else:
    print("No employee with name {change_from} exists. No names changed".format(change_from=emp_name_change))

print(myEmployee.Employee_Name)

演示:

Employee Name: Jack
Hours Worked: 15
Hourly Wage: 10
Employee Name:  Jack
Hours Worked:  15
Hourly Wage:  10.0
Employee Pay : 150.0
What Employee name do you want to change? Steve
No employee with name Steve exists. No names changed
Jack

Employee Name: Steve
Hours Worked: 15
Hourly Wage: 10
Employee Name:  Steve
Hours Worked:  15
Hourly Wage:  10.0
Employee Pay : 150.0
What Employee name do you want to change? Steve
Change Steve to what new name? Jack
Steve's name changed to Jack
Jack