from abc import ABCMeta, abstractmethod
class Employee(object, metaclass=ABCMeta):
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
@abstractmethod
def get_salary(self):
pass
class Salesman(Employee):
def __init__(self, name, sales=0):
super().__init__(name)
self._sales = sales
@property
def sales(self):
return self._sales
@sales.setter
def sales(self, sales):
self._sales = sales if sales > 0 else 0
def get_salary(self):
return 1200.0 + self._sales * 0.05
def main():
emps = Salesman('aa')
emps.sales = int(input('请输入销售额:'))
print(emps.get_salary())
if __name__ == '__main__':
main()
为什么把self._name = name 改为self.name = name; self._sales = sales 改为 self.sales = sales 后就会报错呢?