繁体   English   中英

通过调用超类python创建子类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM