我正在尝试创建一个模块来包装所有的类,并在其他地方使用它们。
class Mixins:
class B:
pass
class C:
pass
b = Mixins.B()
print(Mixins.__all_subclasses__())
# [Mixins.B, Mixins.C]
我的意思是,在创建一个列表之后,我可以将所有子类堆叠在一个列表中,但不是很优雅。有什么本能的因素让我这么做吗?python 3.7
我有三个不同的抽象模型基类。。。我想在多重继承中使用它们,有点像Mixins。这有什么问题吗?
例如,
class TaggableBase(models.Model):
. . .
class Meta:
abstract = True
class TimeStampedBase(models.Model):
. . .
class Meta:
abstract = True
class OrganizationalBase(models.Model):
. . .
class Meta:
abstrac
我最近主要通过在javascript中看到了Mixin的概念。据我所知,这是一种使用抽象类进行多重继承的方法,它更像是一种组合,而不是继承。我还读到了一些关于概念组合重于继承的内容,比如。我知道关于继承和组合的讨论可能会很长,但我已经选择尽可能避免继承(至少现在是这样)。
因此,我想尽可能多地在ES6中使用Mixins,在大多数示例中,我看到有三个类在起作用,比如class A extends MixinB(C)。如果我只想扩展B类,该怎么办?我会做像class A extends MixinB(Object)一样的事情吗?正如所说的,这可能是一种反模式。
注意,我可以做像class A ex
我需要在typescript中使用多重继承。从逻辑上讲,将大量功能放到层次结构中是不好的。我有一个基类和许多层次结构分支。但我需要以某种方式使用混合来将一些主要逻辑放在单独的类中,因为它并不是在每个分支中都使用。
更新代码示例:
function Mixin = function(mixins:any[]){ // mixin decorator
return function(target){
mixins.forEach((mixin) => {
add every function from mixing to target prot
classdef ObjData < matlab.mixin.Copyable
properties
id;
end
methods
function obj = ObjData(path)
[~,name] = fileparts(path);
obj.id = name;
end
end
end
classdef StudyData
properties
objs = []
end
methods
function obj = StudyData()