1. 限制访问的问题:
如果学过C# 语言的我们可以知道C# 语言有get和set方法。我们之前想要获取父类中的私有变量,只能通过写一个set和get的函数进行访问或者通过类生成的新关键字来访问私有属性(_类名__私有变量)。其实Python也给我们提供了一种get和set的方法。其内容就是一种装饰器的作用,采取@property和@变量名.setter的方式。
举例说明1:
# 属性直接对外暴露 # 不安全,没有熟虑过滤 # 使用限制访问的话,需要些set和get方法。 from types import MethodType class Person(object): def __init__(self,age): # 属性直接对外暴露,改为限制访问的方式 self.__age = age # 方法名为受限制的变量去掉双下划线的方式访问 @property # 其实也是一种装饰器 这个就是get方法的意思 def age(self): return self.__age @age.setter # 去掉下划线.setter 这个就是set方法的意思 def age(self,age): if age < 0: age = 0 else: self.__age = age per = Person(18) per.age = 100 print(per.age) # 100 # Property:可以让你对受限访问的属性使用点语法。
其实这种方法说白了,就是把get和set的自定义函数变换成点访问的形式。