鱼C论坛

 找回密码
 立即注册
查看: 1970|回复: 2

[已解决]刚听完类 继承等东西我懵逼了,不会了

[复制链接]
发表于 2023-4-3 12:01:57 | 显示全部楼层 |阅读模式

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

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

x
如何在EEP_INFO中继承PARAM_INFO CODE_PATH的方法,我就是想要这两个类中的变量 ,小白完全不会了,查也不会查了
  1. #获取当前dir
  2. curr_dir = os.getcwd()
  3. all_dict = {}  #如果将小字典加入该总字典中可以执行all_dict.update(new_dict)
  4. class PARAM_INFO:
  5.     @staticmethod
  6.     def __init__(self,param_dict):
  7.         super(PARAM_INFO,self).__init__ #调用父类的__init__方法
  8.         self.model = param_dict.get('MODEL')
  9.         self.typee = param_dict.get('TYPE')
  10.         self.model_type = param_dict.get('MODEL_TYPE')
  11.         self.factory_package = param_dict.get('FACTORY_PACKAGE')
  12.         self.panel_info = param_dict.get('PANEL_INFO')
  13.         self.platform = param_dict.get('PLATFORM')
  14.         self.panel_size = param_dict.get('PANEL_SIZE') # 需要确保在 param_dict 中已经存在该 key
  15.         self.panel_number = param_dict.get('PANEL_NUMBER') # 需要确保在 param_dict 中已经存在该 key
  16.     param_dict = {}
  17.     with open(curr_dir + '/param_main_file.txt','rt') as f:
  18.         for i ,line in enumerate(f):
  19.             line = line.strip()
  20.             if i == 0:
  21.                 MODEL_TYPE = line
  22.                 split_str = MODEL_TYPE.split("_")
  23.                 MODEL = split_str[0]
  24.                 TYPE = split_str[1]
  25.             elif i == 1:
  26.                 FACTORY_PACKAGE = line
  27.             elif i == 2:
  28.                 PANEL_INFO = line
  29.             elif i == 3:
  30.                 PLATFORM = line
  31.             else:
  32.                 break
  33.     #将变量值存入字典中
  34.     for var_name in ['MODEL','TYPE','MODEL_TYPE','FACTORY_PACKAGE','PANEL_INFO','PLATFORM']:
  35.         param_dict[var_name] = locals()[var_name]
  36.     all_dict.update(param_dict)

  37. #调用PARAM_INFO中的all_dict字典及其变量
  38. #param_info = PARAM_INFO(all_dict)
  39. #print(param_info.__dict__)  #打印字典
  40. #print(param_info.model)#打印变量
  41. #获取需要的path
  42. class CODE_PATH:
  43.      @staticmethod
  44.     def __init__(self,codepath_dict):
  45.         self.mtk_code = codepath_dict.get('MTK_CODE')
  46.         self.rtk_code = codepath_dict.get('RTK_CODE')
  47.         self.mstar_code = codepath_dict.get('MSTAR_CODE')
  48.         self.amlogic_code = codepath_dict.get('AMLOGIC_CODE')
  49.         self.ntk_code = codepath_dict.get('NTK_CODE')
  50.         self.hisi_code = codepath_dict.get('HISI_CODE')

  51.     #定义代码路径
  52.     MTK_CODE = "/work_sas1/workspace/Release/build_system_iscsi/factory/MTK/factory"
  53.     RTK_CODE = "/work_sas1/workspace/Release/build_system_iscsi/factory/RTK/factory"
  54.     MSTAR_CODE = "/work_sas1/workspace/Release/build_system_iscsi/factory/Mstar/factory"
  55.     AMLOGIC_CODE = "/work_sas1/workspace/Release/build_system_iscsi/factory/Amlogic/factory"
  56.     NTK_CODE = "/work_sas1/workspace/Release/build_system_iscsi/factory/NTK/factory"
  57.     HISI_CODE = "/work_sas1/workspace/Release/build_system_iscsi/factory/Hisi/factory"
  58.     # 将变量名值存入字典
  59.     codepath_dict = {}
  60.     for var_name in ['MTK_CODE','RTK_CODE','MSTAR_CODE','AMLOGIC_CODE','NTK_CODE','HISI_CODE']:
  61.         codepath_dict[var_name] = locals()[var_name]
  62.     all_dict.update(codepath_dict)
  63. #调用CODE_PATH中的all_dict字典及其变量   
  64. #code_path = CODE_PATH(all_dict)
  65. #print(code_path.__dict__)或print(CODE_PATH.all_dict)
  66. #print(code_path.mtk_code)
  67. class EEP_INFO():
复制代码
最佳答案
2023-4-3 12:05:58
根据你的描述,你希望在EEP_INFO类中继承PARAM_INFO和CODE_PATH类的方法。

首先,你需要调整你的代码,让PARAM_INFO和CODE_PATH类继承自object,

然后让EEP_INFO类继承自PARAM_INFO和CODE_PATH。

为了方便,在EEP_INFO类中我们将创建一个新的初始化方法__init__来完成这个任务。

这是修改后的代码:

  1. class PARAM_INFO(object):
  2.     def __init__(self, param_dict):
  3.         self.model = param_dict.get('MODEL')
  4.         # ...其他属性的赋值

  5. class CODE_PATH(object):
  6.     def __init__(self, codepath_dict):
  7.         self.mtk_code = codepath_dict.get('MTK_CODE')
  8.         # ...其他属性的赋值

  9. class EEP_INFO(PARAM_INFO, CODE_PATH):
  10.     def __init__(self, param_dict, codepath_dict):
  11.         PARAM_INFO.__init__(self, param_dict)
  12.         CODE_PATH.__init__(self, codepath_dict)

  13. # 创建param_dict和codepath_dict
  14. param_dict = {...}  # 从文件中读取的参数字典
  15. codepath_dict = {...}  # 代码路径字典

  16. # 创建EEP_INFO实例
  17. eep_info = EEP_INFO(param_dict, codepath_dict)

  18. # 访问EEP_INFO实例的属性
  19. print(eep_info.model)
  20. print(eep_info.mtk_code)
复制代码


这样,EEP_INFO类就可以继承PARAM_INFO和CODE_PATH类的属性和方法了。你可以使用eep_info实例访问这些属性。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-3 12:05:58 | 显示全部楼层    本楼为最佳答案   
根据你的描述,你希望在EEP_INFO类中继承PARAM_INFO和CODE_PATH类的方法。

首先,你需要调整你的代码,让PARAM_INFO和CODE_PATH类继承自object,

然后让EEP_INFO类继承自PARAM_INFO和CODE_PATH。

为了方便,在EEP_INFO类中我们将创建一个新的初始化方法__init__来完成这个任务。

这是修改后的代码:

  1. class PARAM_INFO(object):
  2.     def __init__(self, param_dict):
  3.         self.model = param_dict.get('MODEL')
  4.         # ...其他属性的赋值

  5. class CODE_PATH(object):
  6.     def __init__(self, codepath_dict):
  7.         self.mtk_code = codepath_dict.get('MTK_CODE')
  8.         # ...其他属性的赋值

  9. class EEP_INFO(PARAM_INFO, CODE_PATH):
  10.     def __init__(self, param_dict, codepath_dict):
  11.         PARAM_INFO.__init__(self, param_dict)
  12.         CODE_PATH.__init__(self, codepath_dict)

  13. # 创建param_dict和codepath_dict
  14. param_dict = {...}  # 从文件中读取的参数字典
  15. codepath_dict = {...}  # 代码路径字典

  16. # 创建EEP_INFO实例
  17. eep_info = EEP_INFO(param_dict, codepath_dict)

  18. # 访问EEP_INFO实例的属性
  19. print(eep_info.model)
  20. print(eep_info.mtk_code)
复制代码


这样,EEP_INFO类就可以继承PARAM_INFO和CODE_PATH类的属性和方法了。你可以使用eep_info实例访问这些属性。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-3 13:32:24 | 显示全部楼层
isdkz 发表于 2023-4-3 12:05
根据你的描述,你希望在EEP_INFO类中继承PARAM_INFO和CODE_PATH类的方法。

首先,你需要调整你的代码, ...

早上我也是这样试的,只是没写如下两行
  1. param_dict = {...}  # 从文件中读取的参数字典
  2. codepath_dict = {...}  # 代码路径字典
复制代码


但是如上执行有错
AttributeError: 'EEP_INFO' object has no attribute 'param_dict
基础知识不扎实,我早上已经试晕了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 00:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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