私有属性
类属性,方法前面加__, 转为私有属性,普通访问不到。
只有在类内部设置才生效。
通过 __dict__ 可以看到,私有属性的标识符前面添加了 _类名
实例外,在属性或方法前面加上 _类名 即可访问。
实例内部,通过字面意思可以直接访问。
另外, 在python社区中约定,_开头的成员,是保护成员,不可修改。也只是社区中约定,python语言并没有任何限制。
成员:属性和方法。
对于这种使用属性, 通常是不想让别人访问到, 如果要访问或修改可以专门写个方法进行, 如下:
# encoding = utf-8 __author__ = "hugbg.com" class Person: def __init__(self, name, age=19): self.name = name self.__age = age #__age 就是一个私有属性 # 封装 def get_age(self): # 定义一个方法, 专门用来获取 age值 return self.__age def set_age(self, value): # 专门用来修改age self.__age = value tom = Person('tom') print('{} is {}'.format(tom.name, tom.get_age())) # tom is 19 tom.set_age(30) print(tom.get_age()) # 30
属性装饰器
属性装饰器的作用,是将一个方法,当做一个属性来访问,另外还提供了一个修改方法的接口。
如下:隐藏age数据,实例访问age和修改age可通过特定方法进行
class Person: def __init__(self, name, age=18): self.name = name self.__age = age # 通过私有属性,隐藏了内部数据,同时提供相应的接口来访问修改属性 --- 封装 def get_age(self): return self.__age def set_age(self, value): self.__age = value tom = Person('Tom') # 获得age print(tom.name, tom.get_age()) # 修改age tom.set_age(100) print(tom.name, tom.get_age())
使用property 装饰后
@property的作用是将方法转换成属性。
此外还有删除功能:
运行 del tom.age 时, 其实是调用的age.deleter
装饰器属性有两种调用方式:
先用property装饰某个方法, 然后这个方法可以当做属性调用, 然后通过setter 设置属性的值, 通过deleter删除属性。
如果不定义setter, 则这个属性不能修改, 为只读属性。
setter 和 deleter不能单独使用, 必须结合@ property使用。
第二种方法:
tom.age 和 tom.get__age() 可以同时使用。
当 age.setter 有更复杂的传参时,参数大于一, 只能使用tom.set_age(value, a, b, c)进行传参, 此时使用tom.age = value 的方式时, set_age(value, a=1, b=2, c=3) 必须有缺省值
1、随机整数生成类
可以先设定一批生成数字的个数,可设定指定生成的数值的范围。运行时还可以调整每批生成数字的个数
2、打印坐标
使用上题中的类,随机生成20个数字,两两配对形成二维坐标系的坐标,把这些坐标组织起来,并打印输出
https://www.hugbg.com/archives/2501.html
2020-05-19 10:12 上午 1F
我追着你,因为我爱你 —原创