[深入Python]Python的私有变量】的更多相关文章

#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/08 8:46 # @Author : lijunjiang # @File : class3.py """ 类的私有变量和私有方法 在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性 特殊变量命名 1. _xx 以单下划线开头的表示的是protected类型的变量.即保护类型只能允许其本身与子类进行访问.若内部变量标示,如: 当使用…
class Test1: def f1(self): self.name ="张三" self.__age = 20 #使用名称变形实现私有变量 print(self.name) print(self.__age) class Test2(Test1): #继承基类Test1 def f(self): print(self.name) print(self.__age) inst1 = Test1() inst1.f1() Test2.f(inst1) '''-------------…
Python内置了一些特殊变量,以前后上下划线标注,同时我们自己要想定义一些变量,不想让外部访问,又该怎么做呢?更多内容请参考:Python学习指南 访问限制 在class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的辅助逻辑. 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name.score属性: bart = Student('Bar Simpson', 59) bar.score 59 bar.score =…
1 python自省机制 这个是python一大特性,自省就是面向对象的语言所写的程序在运行时,能知道对象的类型,换句话说就是在运行时能获取对象的类型,比如通过 type(),dir(),getattr(),hasattr(),isinstance(). a = [1,2,3] b = {'a':1,'b':2,'c':3} c = True print(type(a),type(b),type(c)) # <type 'list'> <type 'dict'> <type…
转载:http://blog.csdn.net/zhu_liangwei/article/details/7667745 引子 我热情地邀请大家猜测下面这段程序的输出: class A(object):        def __init__(self):               self.__private()               self.public()        def __private(self):               print 'A.__private()…
默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量.在python中定义私有变量只需要在变量名或函数名前加上 ”__“两个下划线,那么这个函数或变量就是私有的了.在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__membername,也就是说,类的内部定义中,所有以双下划线开始的名字都被"翻译"成前面加上单…
Python没有真正的私有变量.内部实现上,是将私有变量进程了转化,规则是:_<类名><私有变量> 下面的小技巧可以获取私有变量: class Test(object): def __init__(self): self.__zzz=111 if __name__ == '__main__': a = Test() print a._Test__zzz 同样,通过a._Test__zzz=222的方式,可以修改私有变量的值. 通过dir(Test)和dir(a)可以看到类属性和其实…
在内的内部定义并使用,外部无法訪问,以双下划线作为前作,定义后被python转为 _classname__变量名了 -------------------------------------------------------------------------------------- In [1]: class aa:    ...: __x = 12 #私有变量_ _x    ...: def px(self):    ...: print 'private __x', aa.__x #内…
一.私有变量的定义 在Python中,有以下几种方式来定义变量: xx:公有变量 _xx:单前置下划线,私有化属性或方法,类对象和子类可以访问,from somemodule import *禁止导入 __xx:双前置下划线,私有化属性或方法,无法在外部直接访问(名字重整所以访问不到) __xx__:双前后下划线,系统定义名字(不要自己发明这样的名字) xx_:单后置下划线,用于避免与Python关键词的冲突 如以下例子所示,我在test类中定义了num,_num 和 __num三个属性,并创建…
首先我们这里先描述下: Python中,变量名类似__x__的,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的(比如 __doc__, __init__等),不是private变量, 所以,不能用__name__.__sex__这样的变量名定义私有变量. 有些时候,你会看到以一个下划线开头的实例变量名,比如_name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定, 虽然该变量是可以被访问,但是建议遵循命名规范命名.我们看个例子:访问python的私有变量:…