Python中类的变量,一会一个下划线一会两个下划线,到底有什么区别?

三种类型

下划线与变量的组合一共有以下三种情况,搞清楚他们之间的关系会很有帮助!

形似功能
__xx这是私有变量, 只有内部可以访问,外部不可以访问。但是也不是一定不可以访问,只是解释器把该变量解释成 _类名__xx 。但最好不要这样做,养成良好编程习惯
_x这是实例变量,可以访问,但是不要轻易访问。按照约定俗成,当你看到这样的变量时,意思就是,“虽然我可以被访问,但请把我视为私有变量,不要随意访问”。
__xx__这是特殊变量。特殊变量是可以直接访问的,不是private变量。我们自己最好不要定义这样的变量。可以通过特殊变量查询一些信息,如__name__可以判断本模块是被引用的还是正在当程序运行。

代码演示

运行截图

将所有情况演示一遍

代码
class Student(object):
    def __init__(self,name,score):
        self._name=name
        self.__score=score
    def get_info(self):
        print("%s的成绩为%s" %(self._name,self.__score))
        				#定义一个学生类
lisa=Student('lisa',99) #给出一个lisa实例
lisa.get_info()			#通过内部访问变量
lisa._name				#验证该变量可以访问
lisa._Student__score	#变形的访问私有变量方式,上文有说做好不要这样坐
lisa.__score			#验证无法直接访问

常见的特殊变量

1.__name__

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。

2.__all__

python模块中的__all__,可用于模块导入时限制,如:
from module import *
此时被导入模块若定义了__all__属性,则只有__all__内指定的属性、方法、类可被导入。若没定义,则导入模块内的所有公有属性,方法和类 。

3.__file__

文件所在的路径

4.__slots__

Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值