假设我想要一个根据输入实例化类的对象,并在调用时返回它。
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?为什么你会选择其中一个
答案 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]()