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

使用tf.app.run()调用类中main函数报错求助

问题修复:使用tf.app.run()调用类中main函数的错误解决

首先看你的代码里存在几个明显的问题,导致运行出错,我来逐一帮你修正:

错误点1:未完成的入口语句

你的代码最后一行if __name__...是不完整的,这会直接触发语法错误。必须补全为标准的Python程序入口语句,才能让tf.app.run()正确执行。

错误点2:访问FLAGS私有属性

FLAGS.__flag.iteritems()是在访问TensorFlow Flags模块的私有内部属性(Python中双下划线开头的成员是约定的私有成员),这种写法既不符合编码规范,还会触发属性访问错误。我们应该使用官方提供的公开API来获取FLAGS的键值对。

修正后的完整代码

import tensorflow as tf
import sys

# 定义命令行参数
tf.app.flags.DEFINE_string('f1', '', 'feature 1')
tf.app.flags.DEFINE_string('f2', '', 'feature 2')
FLAGS = tf.app.flags.FLAGS

class Test(object):
    def __init__(self):
        pass
    
    def main(self, args):
        # 使用公开API获取所有flag的键值对
        print("所有flag参数:", FLAGS.flag_values_dict())
        # 也可以单独访问某个指定的flag
        print("f1的值:", FLAGS.f1)
        print("f2的值:", FLAGS.f2)

def main(args):
    test = Test()
    test.main(args)

if __name__ == '__main__':
    # 启动TensorFlow的app运行入口,默认调用全局的main函数
    tf.app.run()

补充优化方案

如果不想写全局的main函数,也可以直接把类实例的main方法传给tf.app.run(),简化代码:

if __name__ == '__main__':
    test = Test()
    tf.app.run(main=test.main)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:31:22