标签:使用 个数 意思 成员方法 开头 module money 小结 调用
Python并没有真正的私有化支持,但可用下划线得到伪私有。 尽量避免定义以下划线开头的变量!
(1)_xxx "单下划线 " 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量,
需通过类提供的接口进行访问;不能用‘from module import *‘导入
(2)__xxx 类中的私有变量/方法名 (Python的函数也是对象,所以成员方法称为成员变量也行得通。),
" 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
(3)__xxx__ 系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 __init__()代表类的构造函数。
小结:
__名字
的,子类不继承,子类不能访问__名字
赋值,那么会在子类中定义的一个与父类相同名字的属性_名
的变量、函数、类在使用from xxx import *
时都不会被导入1.使用property升级getter和setter方法
class Money(object): def __init__(self): self.__money = 0 def getMoney(self): return self.__money def setMoney(self, value): if isinstance(value, int): self.__money = value else: print("error:不是整型数字") money=property(getMoney,setMoney) a=Money() a.money=100 print(a.money)
2.使用property取代getter和setter方法
Python内置的@property
装饰器就是负责把一个方法变成属性调用的
@property
成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有2个作用
class Money(object): def __init__(self): self.__money = 0 @property def money(self): return self.__money @money.setter def money(self, value): if isinstance(value, int): self.__money = value else: print("error:不是整型数字") a=Money() print(a.money)
标签:使用 个数 意思 成员方法 开头 module money 小结 调用
原文地址:https://www.cnblogs.com/python-road/p/10504990.html