python 如何修改双下划线变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 如何修改双下划线变量相关的知识,希望对你有一定的参考价值。
使用sqlalchemy连接数据库的过程中需要在类中声明表名__tablename__,但是因为数据库设计的原因,表名的格式是“user+数字”。那么每次我要调用的表名都不一样,但是在类中无法修改__tablename__,怎么改都不变,请问哪位大神能指点一下。
应当没有问题的,你看代码是可以直接赋值的:
>>> class tb:def __init__(self):
self.__tablename__ = \'\'
def settablename(self, s):
self.__tablename__ = s
>>> t = tb()
>>> t.settablename(\'abc\')
>>>
>>> t.__tablename__
\'abc\'
>>> t.settablename(\'cde\')
>>> t.__tablename__
\'cde\'
>>> t.__tablename__ = \'efg\'
>>> t.__tablename__
\'efg\'
>>>追问
已解决,sqlalchemy修改__tablename__ 的方法是:
__tablename__ =\'table_a\'
self.__table__.name = \'table_b\'
虽然您的解答没有错误但是这个比较特殊
感谢您的回答
即保护类型只能允许其本身与子类进行访问。
2、__xxx 双下划线的表示的是私有类型的变量。只能是允许这个类本身进行访问了。连子类也
不可以
3、__xxx___ 定义的是特列方法。像__init__之类的
python的单下划线和双下划线
python 类中的单下划线开头的变量表示:该方法为类的私有方法,原则上外部不能访问,但是用._XX是可以访问到的
双下划线开头则是强制外部不能直接访问的用.__XX是访问不到的,它内部其实是将变量名重新命名为:_类名__变量名,所以可以通过._类名__变量名访问
#_*_coding:utf-8_*_ __author__ = ‘Linhaifeng‘ class People: __star=‘earth111111111111‘ __star1=‘earth111111111111‘ __star2=‘earth111111111111‘ __star3=‘earth111111111111‘ def __init__(self,id,name,age,salary): print(‘----->‘,self.__star) self.id=id self.name=name self.age=age self.salary=salary def get_id(self): print(‘我是私有方法啊,我找到的id是[%s]‘ %self.id) #访问函数 def get_star(self): print(self.__star) p1=People(‘123123123123‘,‘alex‘,‘18‘,100000000) # print(p1.__star) print(People.__dict__) # print(p1.__star) print(p1._People__star) # # p1.get_star() p1.get_star()
以上是关于python 如何修改双下划线变量的主要内容,如果未能解决你的问题,请参考以下文章