鱼C论坛

 找回密码
 立即注册
查看: 558|回复: 5

[已解决]如何在pycharm中查看某一特定类在何时何地被调用

[复制链接]
发表于 2024-1-16 16:25:38 | 显示全部楼层 |阅读模式

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

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

x
我学习的过浅。对于问题的描述绝对存在纰漏,我详细地说一下我遇到了什么:
屏幕截图 2024-01-16 161750.png
如上,在运行模型到此时,这里定义了一个类(该类就是模型的主要部分),分为两个,一个是初始化一个是运行起来的。
我想要知道,怎么知道这个模型在运行的过程中,在什么时候调用到了CWATModel_ini这个类,我使用pycharm自带的查找用法,一直没有找到
最佳答案
2024-1-16 17:40:33
乱世老高 发表于 2024-01-16 17:39
不对,我注释掉了你代码中的super().__init__()发现没 ...


非常抱歉,我之前的回答有误。在子类的`__init__`方法中没有调用父类的`__init__`方法时,父类的`__init__`方法不会被自动执行。

如果你想要在子类中调用父类的`__init__`方法,可以使用以下方式:

  1. class ini:
  2.     def __init__(self):
  3.         print("ini类的初始化方法被调用")

  4. class model(ini):
  5.     def __init__(self):
  6.         super().__init__()  # 调用父类的初始化方法
  7.         print("model类的初始化方法被调用")

  8. m = model()  # 创建model类的实例
复制代码


通过`super().__init__()`来调用父类的`__init__`方法,这样就能够确保父类的初始化方法被执行,并输出"ini类的初始化方法被调用"。此外,子类自己的初始化逻辑也会被执行,输出"model类的初始化方法被调用"。

再次对之前的回答造成的困扰表示道歉,希望以上解答能够帮到你!如还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-16 16:26:16 | 显示全部楼层
在PyCharm中查看类被调用的情况可以使用调试功能来实现。下面是一种方法:

1. 在你想要查看的类(比如CWATModel_ini)的定义处设置断点。可以点击代码行号左侧的空白处来设置断点,会在该行号处显示一个小红点。

2. 运行你的程序,可以点击PyCharm工具栏上的绿色"运行"按钮或者按下快捷键Ctrl + Shift + F10。

3. 当程序执行到断点处时,会停在该行并进入调试模式。此时你可以观察程序的执行过程。你可以点击工具栏上的调试按钮(比如继续、单步执行等)来控制程序的执行。

4. 当程序执行到调用CWATModel_ini这个类的地方时,会停在该行并显示相关的变量和调用堆栈信息。

通过以上步骤,你可以逐步跟踪代码的执行过程,并观察类被调用的情况。

希望以上解答对你有帮助!如有其他问题,欢迎继续提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-16 17:34:34 | 显示全部楼层
FishC 发表于 2024-1-16 16:26
在PyCharm中查看类被调用的情况可以使用调试功能来实现。下面是一种方法:

1. 在你想要查看的类(比如CW ...

举个例子,我创立了一个类ini,然后定义了其中的__init__方法,比如就是运行一些函数之类的。
那么我现在创建了一个子类,比如class model(ini,dyn),在调用model模块的时候,是不是会自动运行ini里面的各种函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-16 17:35:20 | 显示全部楼层
乱世老高 发表于 2024-01-16 17:34
举个例子,我创立了一个类ini,然后定义了其中的__ini ...


是的,当你创建一个子类并实例化该子类时,会自动调用父类的`__init__`方法。在你的例子中,当你创建子类`model`的实例时,会先调用父类`ini`的`__init__`方法,然后再执行子类自己的初始化逻辑。

下面是一个简单的示例代码,说明了这个过程:

  1. class ini:
  2.     def __init__(self):
  3.         print("ini类的初始化方法被调用")

  4. class model(ini):
  5.     def __init__(self):
  6.         super().__init__()  # 调用父类的初始化方法
  7.         print("model类的初始化方法被调用")

  8. m = model()  # 创建model类的实例
复制代码


运行上述代码,你会看到输出结果为:

  1. ini类的初始化方法被调用
  2. model类的初始化方法被调用
复制代码


可以看到,当创建`model`类的实例时,首先调用了父类`ini`的`__init__`方法,然后再调用了子类`model`的`__init__`方法。这样你就可以在父类的`__init__`方法中运行一些函数,确保它们在子类实例化时被自动调用。

希望以上解答对你有帮助!如果有任何其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-16 17:39:17 | 显示全部楼层
FishC 发表于 2024-1-16 17:35
是的,当你创建一个子类并实例化该子类时,会自动调用父类的`__init__`方法。在你的例子中,当你创建子 ...

不对,我注释掉了你代码中的super().__init__()发现没有正常的输出‘ini类的初始化方法被调用’,这说明没有运行父类中的__init__
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-16 17:40:33 | 显示全部楼层    本楼为最佳答案   
乱世老高 发表于 2024-01-16 17:39
不对,我注释掉了你代码中的super().__init__()发现没 ...


非常抱歉,我之前的回答有误。在子类的`__init__`方法中没有调用父类的`__init__`方法时,父类的`__init__`方法不会被自动执行。

如果你想要在子类中调用父类的`__init__`方法,可以使用以下方式:

  1. class ini:
  2.     def __init__(self):
  3.         print("ini类的初始化方法被调用")

  4. class model(ini):
  5.     def __init__(self):
  6.         super().__init__()  # 调用父类的初始化方法
  7.         print("model类的初始化方法被调用")

  8. m = model()  # 创建model类的实例
复制代码


通过`super().__init__()`来调用父类的`__init__`方法,这样就能够确保父类的初始化方法被执行,并输出"ini类的初始化方法被调用"。此外,子类自己的初始化逻辑也会被执行,输出"model类的初始化方法被调用"。

再次对之前的回答造成的困扰表示道歉,希望以上解答能够帮到你!如还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 18:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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