学习记录
日期:2021年9月3日下午
python中__del__方法
class Person:
def __del__(self):
print('销毁对象:{0}'.format(self))
p1 = Person()
p2 = Person()
del p2
print('程序结束')
print(p1)
#print(p2)
python中__call__方法
#测试可调用方法__call__()
class SalaryAccount:
'''工资计算类'''
def __call__(self, salary):
print('算工资啦。。。')
yearSalary = salary*12
daySalary = salary//22.5
hourSalary = daySalary//8
return dict(yearSalary=yearSalary,monthSalary=salary,daySalary=daySalary,hourSalary=hourSalary)
s = SalaryAccount()
print(s(30000))
python中方法的动态性
#测试方法的动态性
class Person:
def work(self):
print('努力上班!')
def play_game(s):
print('{0}is playing game'.format(s))
def work2(s):
print('好好工作,努力哦上班!赚大钱,娶媳妇!')
Person.play = play_game
p = Person()
p.work()
p.play()
Person.work = work2
p.work()
python中私有属性和方法
#测试私有属性
class Employee:
__company = 'feichangghao '
def __init__(self,name,age):
self.name = name
self.__age = age #私有属性
def __work(self): #私有方法
print('好好工作')
print('Age: {0}'.format(self.__age))
print(Employee.__company)
e = Employee('james',18)
print(e.name)
print(e._Employee__age)
print(dir(e))
e._Employee__work()
python中@property装饰器和get set方法
#测试@property的用法
class Employee:
def __init__(self,name,salary):
self.__name = name
self.__salary = salary
@property
def salary(self):
return self.__salary
@salary.setter
def salary(self, salary):
if 1000<salary<50000:
self.__salary = salary
else:
print('录入错误!薪水在1000-50000这个范围')
'''
def get_salary(self):
return self.__salary
def set_salary(self, salary):
if 1000<salary<50000:
self.__salary = salary
else:
print('录入错误!薪水在1000-50000这个范围')
'''
emp2 = Employee('james',30000)
#print(emp2.get_salary())
#emp2.set_salary(2000)
#print(emp2.get_salary())
print(emp2.salary)
emp2.salary = 2000
print(emp2.salary)