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\'
虽然您的解答没有错误但是这个比较特殊
感谢您的回答

参考技术A 1、_xxx 不能用于’from module import *’ 以单下划线开头的表示的是protected类型的变量。
即保护类型只能允许其本身与子类进行访问。
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 如何修改双下划线变量的主要内容,如果未能解决你的问题,请参考以下文章

python的单下划线和双下划线

查找所有双下划线变量的列表?

python中的单下划线,双下划线以及两端双下划线

python 里面的单下划线与双下划线的区别(私有和保护)

python 里面的单下划线与双下划线的区别

python 类中的单下划线和双下划线的意义