鱼C论坛

 找回密码
 立即注册
查看: 1790|回复: 1

[已解决]基类动态修改的问题

[复制链接]
发表于 2021-5-2 21:15:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  1. BaseAlias = BaseClass  # 为基类取别名

  2. class Derived(BaseAlias):
  3.     def meth(self):
  4.         BaseAlias.meth(self)  # 通过别名访问基类
  5.         ...
复制代码

什么叫做      ''因此,当你想要改变基类的时候,只需要修改别名赋值的那个语句即可。''?看不懂啊.
如上述代码,假如我现在想要修改基类了,怎么操作?再给修改后的基类取一个名然后赋值吗?我记得多取一个名字不是指向的是同一个内存地址吗,这里没用copy方法啊?修改完基类,别名对应的代码不变吗?
最佳答案
2021-6-23 15:59:38
本帖最后由 nahongyan1997 于 2021-6-23 16:14 编辑

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

  4. class B:
  5.     def __init__(self):
  6.         print(2)
  7.         
  8. def create_class(Base):
  9.     class C(Base):
  10.         def __init__(self):
  11.             super().__init__()
  12.    
  13.     return C
  14.    
  15. app=create_class(A)()
  16. app=create_class(B)()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-23 15:59:38 | 显示全部楼层    本楼为最佳答案   
本帖最后由 nahongyan1997 于 2021-6-23 16:14 编辑

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

  4. class B:
  5.     def __init__(self):
  6.         print(2)
  7.         
  8. def create_class(Base):
  9.     class C(Base):
  10.         def __init__(self):
  11.             super().__init__()
  12.    
  13.     return C
  14.    
  15. app=create_class(A)()
  16. app=create_class(B)()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 06:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表