【问题标题】:Python function call in class类中的 Python 函数调用
【发布时间】:2022-01-06 13:53:40
【问题描述】:

我想创建一个返回伪随机数生成器的类。我想将 _rand 函数的结果保存在 _r 中,但是当我调用函数 _rand(int(time.time())) 时,我收到错误消息“rand() 缺少 1 个必需的位置参数:'seed'”。谁能解释一下我做错了什么。

class PRNG:
import time
_m = 32768
_b = 9757 
_c = 6925
 
 def _rand(self, seed):
     n = seed % self._m
     while True:
         n = (n * self._b + self._c) % self._m
         yield n

_r = _rand(int(time.time()))
         
 def rand(self) :
     return self._r.__next__() 
        
prng = PRNG()
print(prng.rand())

【问题讨论】:

  • 欢迎来到 Stack Overflow。请阅读formatting help 并确保您的代码格式正确,与您拥有的完全相同。我不知道您实际上打算如何缩进代码,而且如您所知,缩进在 Python 中至关重要。
  • 也就是说:当您执行_r = _rand(int(time.time())) 时,您希望这究竟意味着什么?特别是,您是否尝试调用类的_rand 方法?在这种情况下,您希望使用该类的哪个实例?为什么?

标签: python function class


【解决方案1】:

_rand() 接受两个参数; selfseed。具体来说,您需要提供正在调用该方法的实例。尝试在构造函数中定义 _r 而不是你所拥有的

def __init__(self):
    self._m = 32768
    self._b = 9757 
    self._c = 6925
    self._r = self._rand(int(time.time()))

【讨论】:

    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多