Python代码报错NameError:name 'generateRandom'未定义,求解决
解决NameError: name 'generateRandom' is not defined错误
这个错误的核心原因是:你在Multi_test方法里直接调用generateRandom(),但它是Mul类内部的方法,Python无法在全局作用域找到它,必须明确指定调用者。
方法一:将generateRandom改为实例方法
给generateRandom添加self参数(Python实例方法的必填参数),然后通过self调用它:
import numpy as np class Mul: def __init__ (self,ra_result=None,rb_result=None): self.ra_result = ra_result self.rb_result = rb_result # 添加self参数,转为实例方法 def generateRandom(self): return np.random.randint(0,2**32), np.random.randint(0,2**32) def Multi_test(self): # 通过self调用类内方法 self.ra_result,self.rb_result= self.generateRandom() print("expected_output (python) = ") print("ra=",self.ra_result,"rb=",self.rb_result," (ra*rb)=") return self.ra_result*self.rb_result object = Mul() object.Multi_test()
方法二:将generateRandom改为静态方法
如果这个方法不需要访问实例的属性,可以用@staticmethod装饰器把它转为静态方法,调用时可以用self或者类名Mul:
import numpy as np class Mul: def __init__ (self,ra_result=None,rb_result=None): self.ra_result = ra_result self.rb_result = rb_result @staticmethod def generateRandom(): return np.random.randint(0,2**32), np.random.randint(0,2**32) def Multi_test(self): # 用self调用静态方法(或直接写Mul.generateRandom()) self.ra_result,self.rb_result= self.generateRandom() print("expected_output (python) = ") print("ra=",self.ra_result,"rb=",self.rb_result," (ra*rb)=") return self.ra_result*self.rb_result object = Mul() object.Multi_test()
内容的提问来源于stack exchange,提问作者Atheer
相关产品推荐
相关产品推荐

