通过调用 super class python 创建 sub class
Create sub class by calling super class python
我有一个项目,我们正在尝试为多个 python GIS 库创建一个更简单的界面。基于我们想要的设计模式,我们希望用户只使用 use/reference superclass 方法而不知道 subclasses.
的内部工作原理
基于传递给 superclass' 构造函数的文件路径扩展,是否可以创建一个 subclass,然后通过 sub 处理用户对 super 方法的调用class?
换句话说,如果用户想制作汽车并与之互动,他们可以给汽车 class 法拉利的蓝图并让汽车 "superclass" 参考 Ferarri "subclass" 方法?
这在设计原则上似乎有点落后。
听起来很像你想要工厂模式:
In object-oriented programming (OOP), a factory is an object for
creating other objects – formally a factory is a function or method
that returns objects of a varying prototype or class.
但是您不应该将功能放在 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)
我有一个项目,我们正在尝试为多个 python GIS 库创建一个更简单的界面。基于我们想要的设计模式,我们希望用户只使用 use/reference superclass 方法而不知道 subclasses.
的内部工作原理基于传递给 superclass' 构造函数的文件路径扩展,是否可以创建一个 subclass,然后通过 sub 处理用户对 super 方法的调用class?
换句话说,如果用户想制作汽车并与之互动,他们可以给汽车 class 法拉利的蓝图并让汽车 "superclass" 参考 Ferarri "subclass" 方法?
这在设计原则上似乎有点落后。
听起来很像你想要工厂模式:
In object-oriented programming (OOP), a factory is an object for creating other objects – formally a factory is a function or method that returns objects of a varying prototype or class.
但是您不应该将功能放在 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)