You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于导入类的问题:如何在Python中调用指定类方法

解决方法:避免类初始化时自动执行方法,手动调用指定方法

问题出在你当前的Juden类把业务方法直接放在了__init__里——__init__是Python类的构造方法,只要你实例化这个类,它就会自动执行里面的所有代码,所以你一导入并创建Juden对象,login()、Search()这些方法就会被自动触发。

要实现“手动调用指定方法”的需求,有两种常用方案:

方案1:修改原类的__init__(推荐)

把__init__还原成只做属性初始化的本职工作,去掉里面对业务方法的调用,让你可以在外部按需调用:

修改Main.py里的Juden类:

class Juden:
    def __init__(self, username, password):
        # 只保存用户的账号密码,不执行业务方法
        self.username = username
        self.password = password

    def login(self):
        <some code>
    def Search(self):
        <some code>
    def NewPosts(self):
        <some code>
    def ComLikFol(self):
        <some code>

然后在你的第二个文件里,就可以完全控制方法的执行顺序了:

import Main

# 创建实例,此时只会初始化属性,不会执行任何业务方法
my_juden = Main.Juden("你的用户名", "你的密码")

# 先调用登录方法
my_juden.login()

# 执行搜索循环
while True:
    my_juden.Search()
    # 可选:加个延时避免频繁请求
    # import time
    # time.sleep(30)

方案2:继承原类并重写__init__(适用于不能修改原代码的情况)

如果你没法改动Main.py的代码,可以通过继承Juden类,重写__init__方法来跳过原构造方法里的自动调用逻辑:

import Main

class CustomJuden(Main.Juden):
    def __init__(self, username, password):
        # 跳过父类的__init__,自己初始化必要属性
        self.username = username
        self.password = password
        # 这里不添加任何业务方法调用

# 使用自定义的子类
my_juden = CustomJuden("你的用户名", "你的密码")
my_juden.login()

# 执行搜索循环
while True:
    my_juden.Search()

小提示

Python里的__init__设计初衷是初始化对象的状态,而不是执行具体的业务逻辑。把业务方法从构造方法里抽出来,不仅能解决你现在的问题,还能让类的逻辑更清晰、复用性更强。

内容的提问来源于stack exchange,提问作者Ignesuss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:03:51