如何在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
相关产品推荐
相关产品推荐

