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

如何在Python中使用面向对象编程(OOP)在函数外部调用局部变量?

使用面向对象编程实现外部访问vertices数组

没问题,我们可以把顶点解析的逻辑封装成一个类,将vertices作为类的实例属性,这样在类的外部就能轻松访问到它了。下面是改造后的代码:

import re
import sys
import os

class VertexParser:
    def __init__(self):
        # 初始化正则表达式和vertices数组
        self.v_pat = re.compile(r"^v\s[\s\S]*")
        self.vertices = ['None']  # 保留你原来的初始值

    def parse_file(self, file_in):
        # 解析文件并填充vertices数组
        with open(file_in, 'r') as f_in:
            for line in f_in:
                v_match = self.v_pat.match(line)
                if v_match:
                    self.vertices.append(v_match.group())

if __name__ == '__main__':
    file_in = sys.argv[1]
    # 实例化解析器对象
    parser = VertexParser()
    # 执行文件解析逻辑
    parser.parse_file(file_in)
    # 现在可以在外部直接访问vertices数组了
    print(parser.vertices)
    # 也可以根据需求对数组做其他操作

关键说明:

  • 把原来的正则表达式和vertices都设置为实例属性,每个VertexParser实例都拥有独立的解析规则和顶点数据,避免不同解析任务之间的干扰
  • parse_file方法专门负责文件解析的核心逻辑,把结果存入实例的vertices属性中
  • 在主程序里,只要创建类的实例、调用解析方法后,就能通过parser.vertices直接获取到你需要的数组

这种面向对象的写法不仅能满足你外部访问变量的需求,还提升了代码的可复用性——如果之后需要解析多个文件,只需要创建多个VertexParser实例即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:02:27