何时以及如何在python中使用静态方法?我们已经建立了使用类方法作为工厂方法来创建对象的实例应该尽可能避免.换句话说,使用类方法作为替代构造函数并不是最佳实践(请参阅python对象的Factory方法 - 最佳实践).
假设我有一个用于表示数据库中某些实体数据的类.想象一下,数据是一个dict包含字段名称和字段值的对象,其中一个字段是使数据唯一的ID号.
class Entity(object):
def __init__(self, data, db_connection):
self._data = data
self._db_connection
Run Code Online (Sandbox Code Playgroud)
这里我的__init__方法采用实体数据dict对象.假设我只有一个ID号,我想创建一个Entity实例.首先,我需要找到其余的数据,然后创建我的Entity对象的实例.从我之前的问题中,我们确定应尽可能避免使用类方法作为工厂方法.
class Entity(object):
@classmethod
def from_id(cls, id_number, db_connection):
filters = [['id', 'is', id_number]]
data = db_connection.find(filters)
return cls(data, db_connection)
def __init__(self, data, db_connection):
self._data = data
self._db_connection
# Create entity
entity = Entity.from_id(id_number, db_connection)
Run Code Online (Sandbox Code Playgroud)
上面是一个例子,说明如果有替代方案,不做或至少不做什么.现在我想知道是否编辑我的类方法,以便它更像是一个实用工具方法,而更少的工厂方法是一个有效的解决方案.换句话说,以下示例是否符合使用静态方法的最佳实践.
class Entity(object):
@staticmethod
def data_from_id(id_number, db_connection):
filters = [['id', 'is', id_number]]
data = db_connection.find(filters)
return data
# Create entity …Run Code Online (Sandbox Code Playgroud)