欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[python] 私有变量和私有方法

程序员文章站 2022-06-24 14:15:36
1、在Python中要想定义的方法或者变量只在类内部使用不被外部调用,可以在方法和变量前面加 两个 下划线 输出: 试错验证,如果按下面方法织造引用私有变量,会报没有该属性 但是可以通过下面这种方法去引用私有变量和方法,在类名前面添加一个下划线 ......

1、在python中要想定义的方法或者变量只在类内部使用不被外部调用,可以在方法和变量前面加 两个 下划线

 

 1 #-*-  coding:utf-8 -*-
 2 
 3 class a(object):
 4     name = "sashuangyibing"
 5     __mingzi = "bingyishuangsa"    # 这个是私有变量,只能在类a之内可以使用,超过类a之外是无法引用到
 6     def fun1(self):
 7         print "this is common method"
 8     def __fun2(self):   # 这个是私有方法,只能在类a之内可以使用,超过类a之外是无法引用到
 9         print "this is private method"
10     def fun4(self):
11         return self.__mingzi    # 该私有变量在当前类之内可以被引用
12 
13 class b(a):
14     def __init__(self):
15         super(b,self).__init__()
16     
17     def fun3(self):
18         print "fun3"
19         
20 aa = a()
21 print aa.name
22 print aa.fun4()
23 print aa._a__mingzi
24 aa._a__fun2()

输出:

sashuangyibing
bingyishuangsa
bingyishuangsa
this is private method

 

试错验证,如果按下面方法织造引用私有变量,会报没有该属性

aa = a()
print aa.__mingzi




traceback (most recent call last):
  file "e:\04.script\work\test.py", line 21, in <module>
    print aa.__mingzi
attributeerror: 'a' object has no attribute '__mingzi'

  

aa = a()
print aa.__fun2()




traceback (most recent call last):
  file "e:\04.script\work\test.py", line 21, in <module>
    print aa.__fun2()
attributeerror: 'a' object has no attribute '__fun2'

  

但是可以通过下面这种方法去引用私有变量和方法,在类名前面添加一个下划线

aa = a()
print aa._a__mingzi    # a前面只有一个下线线
print aa._a__fun2()



bingyishuangsa
this is private method