这是关于创建从不同的形式使用python同一数据的类或类型的实例的最佳实践的问题。 是更好地使用类方法还是更干脆使用一个单独的功能? 比方说,我有用来描述文档的大小的类。 (注:这是一个简单的例子,我想知道创造而不是类的实例来描述文档的大小的最佳途径的最好办法。)
class Size(object):
"""
Utility object used to describe the size of a document.
"""
BYTE = 8
KILO = 1024
def __init__(self, bits):
self._bits = bits
@property
def bits(self):
return float(self._bits)
@property
def bytes(self):
return self.bits / self.BYTE
@property
def kilobits(self):
return self.bits / self.KILO
@property
def kilobytes(self):
return self.bytes / self.KILO
@property
def megabits(self):
return self.kilobits / self.KILO
@property
def megabytes(self):
return self.kilobytes / self.KILO
我__init__
方法需要在位代表的大小值(位只有位,我想继续保持这种方式),但可以说,我有个字节的大小值,我想我的创建类的实例。 是更好地使用类方法还是更干脆使用一个单独的功能?
class Size(object):
"""
Utility object used to describe the size of a document.
"""
BYTE = 8
KILO = 1024
@classmethod
def from_bytes(cls, bytes):
bits = bytes * cls.BYTE
return cls(bits)
要么
def create_instance_from_bytes(bytes):
bits = bytes * Size.BYTE
return Size(bits)
这可能似乎不是一个问题,也许这两个例子都是有效的,但每次我需要实现这样的时间去想它。 在很长一段时间,我宁愿类方法的方法,因为我喜欢搭售类和工厂方法在一起的组织效益。 此外,使用一个类的方法保留到创建任意子类的实例所以它更加面向对象的能力。 在另一方面,一个朋友曾经说:“如果有疑问,执行标准库做什么”,我还没有找到标准库的一个例子。