您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python私有变量解析

5b51 2022/1/14 8:14:45 python 字数 3430 阅读 300 来源 www.jb51.cc/python

Python私有变量解析

概述

在变量前加上两个下划线的是私有变量。


# @param 浅谈Python中的私有变量
# @author 编程之家 jb51.cc|www.512Pic.com 

class Teacher():
  def __init__(self,name,level):
    self.__name=name
    self.__level=level
  #获取老师的等级
  def get_level(self):
    return self.__level
  #获取名字
  def get_in_name(self):
    return self.__name

# End www.jb51.cc

即使是动态方法也无法读取私有变量,强行读取会报错。


# @param 浅谈Python中的私有变量
# @author 编程之家 jb51.cc|www.512Pic.com 

#定义动态方法
def get_name(self):
  return self.__name
#动态方法赋值
Teacher.get_name=get_name
t=Teacher("GG",5)
print("level is: ",t.get_level())    #可行
print("name is",t.get_name())      #报错,显示没有该属性

# End www.jb51.cc

动态方法也无法修改私有变量,强行修改不会报错,但是没有效果


# @param 浅谈Python中的私有变量
# @author 编程之家 jb51.cc|www.512Pic.com 

t.set_name("NN")        #实际没有效果但是不报错
print(t.get_in_name())     #类内部获取名字,输出GG

# End www.jb51.cc

那么强行要读取和改变私有变量怎么办呢?

一个不推荐但是可行的办法:

私有属性在对象内部被名字是”类名_属性名”。

在这个例子里,是这样的:


# @param 浅谈Python中的私有变量
# @author 编程之家 jb51.cc|www.512Pic.com 

print("name is",t._Teacher__name)      #输出GG
t._Teacher__name="AA"            #被改变了
print("name is",t._Teacher__name)      #输出AA

# End www.jb51.cc

总结

以上是编程之家为你收集整理的Python私有变量解析全部内容,希望文章能够帮你解决Python私有变量解析所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶