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

Python类中runcalc调用matrice2x2mult报NameError问题求助

错误原因
  • 类内部定义的方法属于类的实例成员,不能直接通过函数名调用,必须通过实例对象引用,也就是要加self.前缀。你在runcalc里直接写matrice2x2mult(),Python会在全局作用域查找这个函数,找不到就抛出NameError。
  • 你当前定义的matrice2x2mult方法没有加self参数,属于未绑定的方法,后续即使加了self.前缀调用,也会因为实例自动传入的self参数没有位置接收,抛出参数数量不匹配的错误。
解决方案

只需要修改两处代码即可:

  1. 给matrice2x2mult方法添加self参数
  2. 在runcalc方法中调用时改为self.matrice2x2mult()
完整修复代码
import time
class calculator(): 
    def __init__(self, method):
        self.method = method

    def matrice2x2mult(self): # 新增self参数
        print("Matrix 1:")
        a = input("a:")
        b = input("b:")
        c = input("c:")
        d = input("d:")
        print(f"({a} {b})\n({c} {d})")
    

    def runcalc(self, method):
        if self.method == "1":
            print("yes")
            self.matrice2x2mult() # 新增self.前缀
        elif self.method == "2":
            pass

print ("welcome to matrice Calculator: \nEnter 'HELP' for help menu")
time.sleep(1)
q = input(r"What method is required:")
q = str(q)
help1 = False

while help1 == False:
    if r"HELP" in str(q): 
        print("------help-menu------")
        print("ENTER '1' FOR 2X2 MATRIX MULTIPLICATION")
        print("ENTER '2' FOR A INVERSE OF A 2X2 MATRIX")
        time.sleep(1)
        q = str(input(r"What method is required:"))
        break
    else:
        break
        pass

query = calculator(q)
query.runcalc(q)
可选优化点
  • runcalc方法传入的method参数没有被使用,你已经在实例化的时候把method存在了self.method里,可以删掉这个冗余参数。
  • 2x2矩阵乘法目前只实现了第一个矩阵的输入,后续可以补全第二个矩阵输入和乘法计算逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:39:02