class Employee:
def __init__(self,name,age):
self.name = name
self.age = age #私有实例属性
e=Employee("li",23)
print(e.name)
print(e.age)
以上输出为 li 23
但是如果改一下 是私有属性,在输出的时候就业需要改动
class Employee:
def __init__(self,name,age):
self.name = name
self.__age = age #私有实例属性
e=Employee("li",23)
print(e.name)
print(e._Employee__age) #在各个位置也只能用私有属性,才可以获取到
私有方法的调用
class Employee:
def __init__(self,name,age):
self.name = name
self.__age = age #私有实例属性
def __work(self): #创建的私有方法
print("努力!")
print("年龄:{0}".format(self.__age)) #对age的调用遵从前面的私有属性
e=Employee("li",23)
print(e.name)
print(e._Employee__age) #在各个位置也只能用私有属性,才可以获取到
e._Employee__work() #对work的调用注意写法
property编辑器
class Employee:
@property #带着property修饰器,把方法变成了属性
def salary(self):
print('salary run……')
return "333"
e=Employee() #在这里表示类
print(e.salary) #在这里表示调用了这个属性(因为方法已经变成了属性)
#最后输出salary run…… 333
但是如果我没有修饰,还是当作一个方法来看 ,那么想正常输出应该如下
class Employee:
def salary(self):
print('salary run……')
return "333"
e=Employee() #在这里表示类
print(e.salary()) #在这里表示调用了这个方法
#最后输出salary run…… 333
品味一下property和getter和setter
class Employee:
def __init__(self,salary):
self.__salary = salary
@property #相当于 salary 属性的 getter 方法
def salary(self):
return self.__salary
@salary.setter
def salary(self,salary): #相当于 salary 属性的 setter 方法
if(0<salary<1000000):
self.__salary = salary
else:
print("薪水录入错误!只能在 0-1000000 之间")
emp1 = Employee(100)
print(emp1.salary)
emp1.salary = 200
print(emp1.salary)
emp1.salary = -200
class Employee:
def __init__(self,salary):
self.__salary = salary
@property #相当于 salary 属性的 getter 方法
def salary(self):
return self.__salary #注意这一步的格式
@salary.setter
def salary(self,salary): #相当于 salary 属性的 setter 方法
if(0<salary<1000000):
self.__salary = salary #注意这一步的格式
else:
print("薪水录入错误!只能在 0-1000000 之间")
emp1 = Employee(100)
print(emp1.salary)
emp1.salary = 200
print(emp1.salary)
emp1.salary = -200
#结果是100 200 "薪水录入错误!只能在 0-1000000 之间" 200
#老师说了 一般采用的传参方式就是这种写法emp1 = Employee(100)