Python高级教程之私有化
来源:互联网 发布:西南交通大学网络教学 编辑:程序博客网 时间:2024/05/22 14:30
Class Test(object):
def __init__(self):
self.__num = 10
t =Test(100)
print(t,__num)
外部打印不了
Class Test(object):
def __init__(self):
self.__num = 10
def setNum(self,newNum):
self.__num = newNum
def getNum(self):
return self.__num
t =Test()
#print(t,__num)
print(t.getNum())
t.setNum(50)
print(t.getNum())注意1:子类继承不了父类中__XXX的类,只能调用其他非私有方法间接使用,如果在子类中向__名字赋值,那么会在子类中定义的一个与父类相同名字的属性
"""XX:共有变量,随意用
-Xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)
_x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问(通过import XX.可以使用 XX._x)
__xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到,通过di()可以查看 _类的名字_XX))
xx_:单后置下划线,用于避免与Python关键词的冲突
属性 proprety
Class Test(object):
def __init__(self):
self.__num = 10
def setNum(self,newNum):
self.__num = newNum
def getNum(self):
return self.__num
num = proprety(getNum,setNum)
t =Test()
#print(t,__num)
print(t.getNum())
#t.setNum(50)
#print(t.getNum())t.num =50
print(t.num)
用proprety进行升级,相当于把方法封装,开发者对属性进行设置时更方便
另外一种方式,同样可以得到这个效果,使用装饰器
Class Test(object):
def __init__(self):
self.__num = 10
@num.setter
def num(self,newNum):
self.__num = newNum
@proprety
def num(self):
return self.__num
t =Test()
#print(t,__num)
print(t.getNum())
#t.setNum(50)
#print(t.getNum())t.num =50
print(t.num)
- Python高级教程之私有化
- Python--私有化
- Python高级教程之装饰器
- Python高级教程之作用域
- python学习-面向对象进阶之私有化(六)
- Python基础:15私有化
- python的私有化
- Python的私有化
- Python中的下划线/私有化
- python中的私有化
- python Logger 高级教程
- python+selenium高级教程
- Python高级教程
- Python 高级教程之深拷贝与浅拷贝
- Python高级教程之动态添加属性及方法
- python特性、属性以及私有化
- python特性、属性以及私有化
- Python特性、属性以及私有化
- Ensemble 概念入门
- 如何使用ARMS配置tengine的日志监控
- phpcms 后台登陆及版权修改问题
- 无人自助便利店采用射频识别技术 30秒钟就能完成付款
- POJ 3691 Nubulsa Expo 全局最小割
- Python高级教程之私有化
- java.util.HashMap
- IntelliJ IDEA下的使用git
- 阿里云短信服务api
- 使用ueditor视频无法上传的问题
- 神经网络之激励函数(Activation Function)
- canvas中save和store函数的用法
- ACM 数论 Maximum GCD
- 【Modbus】 RTU CRC校验码计算方法