我有一个映射数据库对象的类
class MyObj:
def __init__(self):
...SQL request with id as key...
if len(rows) == 1:
...maps columns as my_obj attributes...
self.exists = True
else:
self.exists = False
通过这样的设计,每次都会创建一个对象,我们会使用 .exists 属性检查它是否存在于数据库中。
my_obj = MyObj(id=15)
if my_obj.exists:
...do stuff...
它有效。
但我怀疑有更简洁的初始化方法,我们只需要这样检查:
my_obj = MyObj(id=15)
if my_obj:
...do stuff...
最佳答案
您不能在 __init__
中执行此操作,因为该方法是在创建新实例之后运行的。
你可以用object.__new__()
来做然而,这首先是为了创建实例而运行的。因为它通常应该返回那个新实例,所以您也可以选择返回其他东西(比如None
)。
你可以这样使用它:
class MyObj:
def __new__(cls, id):
# ...SQL request with id as key...
if not rows:
# no rows, so no data. Return `None`.
return None
# create a new instance and set attributes on it
instance = super().__new__(cls) # empty instance
instance.rows = ...
return instance
关于python - 如果在 __init__() 中不满足条件,则不要创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44139867/