我对Python中的类有疑问。我创建了一个看起来像这样的类:
class Model(Object):
__table__ = 'table_name'
def func():
def func2():
表名是函数反馈的全局变量。我正在尝试添加旧数据,所以我想根据我是否填写旧信息来更改表名,所以这就是我尝试过的。
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():
最后的电话会是这样的:
if backfill:
model = Model(True).func()
else:
model = Model.func()
然后我意识到这不起作用,因为我不能从类定义之外调用self.backfill。我甚至尝试创建一个定义并在类中调用它,但这也不起作用。
我的问题是:
答案 0 :(得分:1)
__table__
是一个类变量,这意味着您可以从实例或类本身访问它。您可以根据backfill
方法中的__init__
值更新任何实例值:
class Model(Object):
__table__ = 'table_name'
def __init__(self, backfill = False):
self.backfill = backfill
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
但我没有看到在你的情况下使用类变量的意义。您可以在__init__
方法中定义它:
class Model(Object):
def __init__(self, backfill = False):
self.backfill = backfill
self.__table__ = 'table_name'
if self.backfill:
self.__table__ = 'table_name2'