numpy 未定义名称‘GenerateRandom’“

db2dz4w8  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(139)

我正在尝试运行此代码,但收到错误消息->“NameError:没有定义名称‘GenerateRandom’”
有谁能帮帮我吗?

`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

    def generateRandom():
        return np.random.randint(0,2**32), np.random.randint(0,2**32)

    def Multi_test(self):
        self.ra_result,self.rb_result= 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()`
68bkxrlz

68bkxrlz1#

您必须使用关键字self来让您的类知道您正在使用其自身的方法。
在调用函数self.generateRandom()时必须指定self,还需要在创建将self作为参数的函数时指定,但由于您有一个静态方法,所以可以将其 Package 在@staticmethod
这是您的Mul类的工作版本

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.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
lpwwtiir

lpwwtiir2#

我不会讨论您为什么以这种方式编写代码,也不会直接谈论您的错误。您会收到此错误,因为生成随机是MUL类中的方法。要在方法中引用同一类的其他方法,应使用‘self’。另外,由于生成随机不使用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

    @staticmethod
    def generateRandom():
        return np.random.randint(0,2**32), np.random.randint(0,2**32)

    def Multi_test(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

my_object = Mul()
my_object.Multi_test()
mitkmikd

mitkmikd3#

您尝试调用的函数本身就是一个类函数,即需要这样调用它:

self.generateRandom()

编辑:您可以将生成随机()改为内部私有函数

def __generateRandom(self):
...
rng = self.__generateRandom()

在这种情况下,您可以轻松地访问它,但它仍然遥不可及

相关问题