如何在实现__new__时定义其他方法

时间:2018-03-16 14:00:51

标签: python class

在此示例中,用户必须处理两种文件类型(.txt和.csv)。但是,使用者不想打扰检查文件类型,因此实例化专用类。相反,用户使用__new__创建了一个FileTypeFactory实例,并且将实例化并返回相应的类型。但是,我没有看到如何在AttributeError

中添加新方法到工厂
class TXT:
    def is_valid(self):
        return False

class CSV:
    def is_valid(self):
        return True

class FileTypeFactory:
    def __new__(cls):
        for FileType in [TXT, CSV]:
            file_type = FileType()
            if file_type.is_valid():
                return file_type

    def factory_method(self):
        print('Running factory_method')


c = Factory()
c.__class__.__name__
# Returns: 'CSV'
c.factory_method()
# Returns: AttributeError: 'CSV' object has no attribute 'factory_method'

0 个答案:

没有答案