【发布时间】:2019-12-20 20:00:24
【问题描述】:
我希望以一种比我的直觉更优雅的方式来实现一些代码。我会尽力描述我正在尝试的内容。
class Fruit():
pass
class Apple(Fruit):
pass
class Orange(Fruit):
pass
def create_fruit(fruit_type):
test = ???? # code here to create instance of fruit of desired type called test
好的,希望这段代码有点意义。我在一个模块中有一个函数,它需要一堆参数来创建一个类的实例。理想情况下,我想传递一个参数来说明要创建的类的类型(但它们都是同一个超类的实例或子类)。每个子类的参数将是相同的(截至目前)。
我可能可以很容易地用 if 语句做一些事情并一起破解(例如,if fruit_type==1、test=Apple()、if fruit_type == 2、test=Orange() 等……),但作为一名 Python 程序员,我试图提高自己,我想知道是否有更好的方法来做到这一点。我已经简要阅读了装饰器和函数式编程(尽管它对我来说仍然很抽象,并且需要更多时间来理解),所以也许这也是同样的道理?
【问题讨论】:
-
Apple 和 Orange 是否具有相同的参数和方法,或者它们是否完全不同,例如 Apple 和汽车?
-
它们现在具有所有相同的参数,但很可能具有不同的方法。
标签: python python-3.x python-3.8