[英]Create sub class by calling super class python
我有一个项目,我们试图为几个python GIS库创建一个更简单的界面。 基于所需的设计方案,我们希望用户仅使用/引用超类方法,而无需了解子类的内部工作原理。
基于传递给超类的构造函数的文件路径扩展,是否可以创建一个子类,然后通过该子类来处理用户对超级方法的调用?
换句话说,如果用户想要制造汽车并与之互动,他们是否可以给汽车类提供法拉利的蓝图,并让汽车“超类”引用法拉利“子类”方法?
就设计原理而言,这似乎有些倒退。
听起来很像您想要的工厂模式:
在面向对象编程(OOP)中,工厂是用于创建其他对象的对象-形式上,工厂是返回不同原型或类的对象的函数或方法。
但是您不应该将功能放在Car
的构造函数中。 在您的情况下, Car
只是许多不同汽车的通用接口。 这样,该接口就不必了解有关实现的任何信息,它包括子类的名称。
使用一个实例化对象的简单函数会更好:
class Car(object):
pass
class Ferrari(Car):
pass
class Volkswagen(Car):
pass
def car_factory(blueprint, *args, **kwargs):
if blueprint == "Ferrari":
return Ferrari(*args, **kwargs)
if blueprint == "Volkswagen":
return Volkswagen(*args, **kwargs)
或简单地
def car_factory(blueprint, *args, **kwargs):
cars = {"Ferrari":Ferrari,
"Volkswagen":Volkswagen}
return cars[blueprint](*args, **kwargs)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.