Python中的私有变量的下划线
- 2020-09-25 08:50:00
- 六月
- 转贴 814
1.单下划线
变量前的单下划线表示表面上私有 ,但是其实这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。
2.双下划线
变量前的双下划线表示真正的私有,实际上的私有,只有内部可以访问,外部不能访问
但是有窍门,可以在类里面增加get__namedede和set__namedede这样的方法来突破限制,而且还能在方法里做验证。
3.前后双下划线(如:__init__):
名称前后的双下划线是一种惯例,对Python系统来说,这将确保不会与用户自定义的名称冲突。通常,你将会覆写这些方法,并在里面实现你所需要的功能,以便Python调用它们。
双下划线一般再类里面使用,对类里面的变量进行封装,类中的方法也同理
class A:
def __init__(self):
self.__a= '111'
a = A()
#a你就没法.出他的__a属性,硬是要获得只能a._A__a
但是类内你就可以__a获得他的属性
_xx:单前置下划线,私有化属性或方法,类对象和子类可以访问, from somemodule import* 禁止导入
__xx:双前置下划线,私有化属性或方法,无法在外部直接访问(名字重整所以访问不到)
#__x主要是针对类,不是类你毫无意义
#_x主要针对导入
导入我给你举个例子好了
aaa.py
def _a():
print('hello ')
1.py
from aaa import *
_a()
#NameError: name '_a' is not defined 不能通过from aaa from * 导入
2.py
from aaa import _a
_a()
#hello 可以通过from aaa import _a 导入
python变量命名规则:
在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
Python 中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。
以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去。如下:
list1 = [1,' xiaoming', 29.5, '17312662388']
for _ in list1:
print(f'{_}的类型为{type(_)}')
参考: https://www.cnblogs.com/Paul-watermelon/p/11165178.html