白本羽 发表于 2021-5-2 21:15:38

基类动态修改的问题

如果我要继承的基类是动态的(有时候是A,有时候是B),我应该如何部署我的代码,以便基类可以随意修改。
答:你可以先为基类定义一个别名,在类定义的时候,使用别名代替你要继承的基类。因此,当你想要改变基类的时候,只需要修改别名赋值的那个语句即可。顺便说一下,当你的资源是视情况而定的时候,这个小技巧很管用。

BaseAlias = BaseClass# 为基类取别名

class Derived(BaseAlias):
    def meth(self):
      BaseAlias.meth(self)# 通过别名访问基类
      ...

什么叫做      ''因此,当你想要改变基类的时候,只需要修改别名赋值的那个语句即可。''?看不懂啊.
如上述代码,假如我现在想要修改基类了,怎么操作?再给修改后的基类取一个名然后赋值吗?我记得多取一个名字不是指向的是同一个内存地址吗,这里没用copy方法啊?修改完基类,别名对应的代码不变吗?

nahongyan1997 发表于 2021-6-23 15:59:38

本帖最后由 nahongyan1997 于 2021-6-23 16:14 编辑

这样就好了
class A:
    def __init__(self):
      print(1)

class B:
    def __init__(self):
      print(2)
      
def create_class(Base):
    class C(Base):
      def __init__(self):
            super().__init__()
   
    return C
   
app=create_class(A)()
app=create_class(B)()
页: [1]
查看完整版本: 基类动态修改的问题