Skip to main content
 首页 » 编程设计

python之在 Python 的类方法中创建实例

2025年05月04日15linjiqin

我正在尝试创建 DataType 类来反射(reflect) SQL 数据库中的数据类型。由于数据类型需要不同的信息,如size、precision等,因此在创建实例时需要指定不同的参数。

我希望能够用 DataType.createVarChar(size, charSet) 之类的东西调用它。到目前为止,我已经编写了下面的代码,但我不确定这是否是正确的方法,因为我最初是在开始时创建一个对象而没有在其中提供任何信息。

在这种情况下,正确的设计是什么?

class SQLDatatype(Enum): 
    UNSUPPORTED, 
    VARCHAR 
 
 
class DataType(object): 
 
    def __init__(self, dataType=None, precision=None, scale=None, size=None, charSet=None): 
        self.dataType = dataType 
        self.precision = precision 
        self.scale = scale 
        self.size = size 
        self.withLocalTimezone = withLocalTimezone 
        self.charSet = charSet 
 
    def createVarChar(self, size, charSet): 
        return Datatype(dataType=SQLDataType.VARCHAR, size=size, charSet=charSet) 

请您参考如下方法:

标准方法是创建一个函数:

def createVarChar(size, charSet): 
    return Datatype(dataType=SQLDataType.VARCHAR, size=size, charSet=charSet) 

另一种选择是创建一个类方法:

class DataType(object): 
    ... 
    @classmethod 
    def createVarChar(cls, size, charSet): 
        return cls(dataType=SQLDataType.VARCHAR, size=size, charSet=charSet) 

这允许此方法正确地处理继承,而自由函数则不会。