2022年 11月 3日

IOT python 高级培训(二)

property函数

property() 函数的作用是在新式类中返回属性值。

用法

class property([fget[, fset[, fdel[, doc]]]])

参数

  • fget — 获取属性值的函数
  • fset — 设置属性值的函数
  • fdel — 删除属性值函数
  • doc — 属性描述信息

实例

  1. #定义一个可控属性值 x
  2. class C(object):
  3. def __init__(self):
  4. self._x = None
  5. def getx(self):
  6. return self._x
  7. def setx(self, value):
  8. self._x = value
  9. def delx(self):
  10. del self._x
  11. x = property(getx, setx, delx, "I'm the 'x' property.")

视频实例

  1. #property 所有权
  2. class Person(object):
  3. def __init__(self,age):
  4. #属性直接对外暴露
  5. # self.age=age
  6. self._age = age
  7. # def getAge(self):
  8. # return self._age
  9. def setAge(self,age):
  10. if age<0:
  11. age=0
  12. self._age=age
  13. #方法为受限制的变量去掉双下划线
  14. @property
  15. def age(self):
  16. return self._age
  17. @age.setter #去掉下划线.setter
  18. def age(self,age):
  19. if age<0:
  20. age=0
  21. self._age=age
  22. per=Person(18)
  23. # 直接暴漏不安全,没有数据过滤
  24. # per.age=-10
  25. # print(per.age)
  26. # per.setAge(15)
  27. # print(per.getAge())
  28. per.age=-100#相当于调用setage
  29. print(per.age)#相当于调用getage
  30. #property 可以让你对受限制访问的属性使用点语法

动态添加属性

视频实例

  1. #动态添加属性
  2. #创建一个空类
  3. # from types import MethodType
  4. #
  5. # class Person(object):
  6. # pass
  7. # #添加属性
  8. # per=Person()
  9. # #动态添加属性,体现动态添加特点 灵活
  10. # per.name='tom'
  11. # #d动态添加方法
  12. # print(per.name)
  13. #
  14. # def say(self):
  15. # print("my name is "+self.name)
  16. # per.speak=MethodType(say,per)
  17. # per.speak()
  18. #-------------------------------------
  19. from types import MethodType
  20. class Person(object):
  21. __slots__ =("name","say","speak")#slots 插入 限制添加属性
  22. #添加属性
  23. per=Person()
  24. #动态添加属性,体现动态添加特点 灵活
  25. per.name='tom'
  26. #d动态添加方法
  27. print(per.name)
  28. def say(self):
  29. print("my name is "+self.name)
  30. per.speak=MethodType(say,per) #使用包添加函数
  31. per.speak()

运算符

 

实例

  1. import operator
  2. print(1+2)
  3. print("1"+"2")
  4. #不同的类型用加法就会有不同解释
  5. class Person(object):
  6. def __init__(self,num):
  7. self.num=num
  8. #运算符运算
  9. def __add__(self, other):
  10. return Person(self.num+other.num)
  11. def __str__(self):
  12. return "num = "+str(self.num)
  13. per1=Person(1)
  14. per2=Person(1)
  15. print(per1+per2)