为什么在python中使用class方法而不是常规函数

时间:2018-06-10 12:32:37

标签: python python-3.x oop design-patterns

假设我想要一个根据输入实例化类的对象,并在调用时返回它。

require': cannot load such file -- watir (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in

哪种设计更pythonic?为什么你会选择其中一个

1 个答案:

答案 0 :(得分:0)

工厂对象不被认为是非常pythonic;面对这样的问题,第一类对象,方法或函数通常是更好的方法:

class Pet:
    pass

class Cat(Pet):
    pass

class Dog(Pet):
    pass

pets = {'cat': Cat, 'dog': Dog}

if __name__ == "__main__":
    pet = input()
    my_pet = pets[pet]()

有时,API会通过名称以from_...

开头的工厂提供一组构造函数
def from_pet_name(pet: str)-> Pet:
    return pets[pet]()