【问题标题】:how to use get and set methods to set value of a property inside a class python 3.6如何使用get和set方法在类python 3.6中设置属性的值
【发布时间】:2017-09-21 18:56:05
【问题描述】:
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()

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

我的任务是创建一个名为“Employee”的类,

(1) 构造函数创建属性员工姓名、工作时间和小时工资。

(2)我需要使用“get”和“set”方法来设置一个名为“Empname”的属性的值,该属性反映了员工的姓名。

(3)我需要一个名为“Emppay”的方法来计算员工的每周工资。

(4) 然后我需要让用户提供姓名、工作时间和小时工资,并使用我的“Employee”类创建“myEmployee”对象。使用“myEmployee”对象打印姓名、工作时间和小时工资。使用“myEmployee”对象调用“Emppay”方法来计算每周工资。

(5)要求用户更改员工姓名。使用 'Empname' 属性将名称更改为新名称并使用正确的方式打印出新名称。

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

【问题讨论】:

    标签: python-3.x class properties


    【解决方案1】:

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

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

    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
    

    【讨论】:

      猜你喜欢
      • 2014-07-09
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 2013-12-26
      相关资源
      最近更新 更多