如何在Python类中获取result()方法内的word变量
解决方案
- 方案1:修改
result方法直接返回word(最推荐)
你只需要在原方法逻辑末尾新增返回语句,即可在调用方法时直接拿到拼接完成的word值,修改后代码如下:
def result(self,var1,word="",mainlista=mainlista): try: for i in range(int(var1)): x = random.choice(mainlista) word += x except IndexError: pass # 新增返回语句输出word return word
调用示例:
# 假设你的类实例名为cls_instance target_word = cls_instance.result(var1=10) # target_word就是你要获取的word变量
额外注意:原方法中mainlista=mainlista的默认参数写法存在隐患,Python的函数默认参数会在定义阶段完成初始化,若mainlista是列表这类可变对象,后续所有调用都会复用同一个对象,建议调整为以下写法:
def result(self,var1,word="",mainlista=None): # 在方法内部初始化默认参数 if mainlista is None: mainlista = 原逻辑中mainlista的初始值 try: for i in range(int(var1)): x = random.choice(mainlista) word += x except IndexError: pass return word
- 方案2:无侵入获取(无需修改原类代码)
如果你无权修改原类的源代码,可以使用猴子补丁替换原方法实现变量获取,示例代码如下:
# 替换为你实际的类名 from your_module import YourClass original_result = YourClass.result def patched_result(self, var1, word="", mainlista=mainlista): # 先执行原方法逻辑 original_result(self, var1, word, mainlista) # 这里可以直接拿到处理后的word print("获取到的word值:", word) # 可自行增加存储逻辑,比如存到实例属性 self.cached_word = word return word # 替换原方法 YourClass.result = patched_result
替换后调用原result方法时,word会被自动存到实例的cached_word属性中,也可以直接接收方法返回值拿到。
内容的提问来源于stack exchange,提问作者recruitprogrammer
相关产品推荐
相关产品推荐

