python 如何修改双下划线变量

使用sqlalchemy连接数据库的过程中需要在类中声明表名__tablename__,但是因为数据库设计的原因,表名的格式是“user+数字”。那么每次我要调用的表名都... 使用sqlalchemy连接数据库的过程中需要在类中声明表名__tablename__,但是因为数据库设计的原因,表名的格式是“user+数字”。那么每次我要调用的表名都不一样,但是在类中无法修改__tablename__,怎么改都不变,请问哪位大神能指点一下。 展开
 我来答
就烦条0o
2019-01-18 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部

应当没有问题的,你看代码是可以直接赋值的:

>>> 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'
虽然您的解答没有错误但是这个比较特殊
感谢您的回答
正备吗02
2019-01-16 · TA获得超过310个赞
知道小有建树答主
回答量:504
采纳率:20%
帮助的人:59.3万
展开全部
1、_xxx 不能用于’from module import *’ 以单下划线开头的表示的是protected类型的变量。
即保护类型只能允许其本身与子类进行访问。
2、__xxx 双下划线的表示的是私有类型的变量。只能是允许这个类本身进行访问了。连子类也
不可以
3、__xxx___ 定义的是特列方法。像__init__之类的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式