Python 从类变量在类内分配全局变量
我有一个关于Python中的类的问题。我创建了一个类似以下内容的类:Python 从类变量在类内分配全局变量,python,python-2.7,class,Python,Python 2.7,Class,我有一个关于Python中的类的问题。我创建了一个类似以下内容的类: class Model(Object): __table__ = 'table_name' def func(): def func2(): if backfill: model = Model(True).func() else: model = Model.func() 表名是函数提供的全局变量。我正在尝试添加旧数据,因此我想根据是否从旧信息中填写来更改表名,所以这就是
class Model(Object):
__table__ = 'table_name'
def func():
def func2():
if backfill:
model = Model(True).func()
else:
model = Model.func()
表名是函数提供的全局变量。我正在尝试添加旧数据,因此我想根据是否从旧信息中填写来更改表名,所以这就是我尝试的
class Model(Object):
def __init__(self, backfill = False):
self.backfill = backfill
if self.backfill:
__table__ = 'table_name'
else:
__table__ = 'table_name2'
def func():
def func2():
最后一个电话是这样的:
class Model(Object):
__table__ = 'table_name'
def func():
def func2():
if backfill:
model = Model(True).func()
else:
model = Model.func()
然后我意识到这是行不通的,因为我不能从类定义之外调用self.backfill。我甚至尝试创建一个定义并在类中调用它,但这也不起作用
我的问题是:
\uuuu table\uuu
是一个类variabe,这意味着您可以从实例或类本身访问它。您可以根据\uuuu init\uuuu
方法中的回填
值更新任何实例值:
class Model(Object):
__table__ = 'table_name'
def __init__(self, backfill = False):
self.backfill = backfill
if self.backfill:
self.__table__ = 'table_name2'
class Model(Object):
def __init__(self, backfill = False):
self.backfill = backfill
self.__table__ = 'table_name'
if self.backfill:
self.__table__ = 'table_name2'
然后,要创建一个实例,只需将backfill
参数提供给构造函数,而不需要任何if/else语句:
print(Model.__table__)
# table_name
backfill = True
model = Model(backfill)
print(model.__table__)
# table_name2
但是我不认为在你的例子中使用类变量有什么意义。您可以在\uuuu init\uuuu
方法中定义它:
class Model(Object):
__table__ = 'table_name'
def __init__(self, backfill = False):
self.backfill = backfill
if self.backfill:
self.__table__ = 'table_name2'
class Model(Object):
def __init__(self, backfill = False):
self.backfill = backfill
self.__table__ = 'table_name'
if self.backfill:
self.__table__ = 'table_name2'
表名是函数反馈的全局变量-您能否澄清“反馈”是什么意思?您是否看过
\uuuuuu table\uuuuuu
不是全局变量。如果self.backfill因不存在selfself而出错,则它是classModel
的一个属性。你到底想做什么?从理论上讲,没有一个类属性(或全局变量)可以依赖于一个实例(即self),因为可以有多个实例,但只有一个类。谢谢Frodon!这正是我想要的——我是面向对象编程的新手,所以我无法清楚地表达我想要的到底是什么,但你能够绕过它!谢谢