我正在自学Python,并遇到了类和模块的障碍。
下面的代码是您可能永远都不会写的东西,但是我只想了解我的错误。

import random

class GetRandom:
    def __init__(self):
        self.data = ""

    def ranNumber():
        return random.random()

b = GetRandom()
bnum = b.ranNumber
print bnum


我得到的输出是:

<bound method GetRandom.ranNumber of <__main__.GetRandom instance at 0x7fe87818df38>>


我期望一个介于0和1之间的随机数。我在做什么错?

谢谢

最佳答案

这里有两个问题:


您忘记了实际调用GetRandom.ranNumber。在其后添加()以执行此操作:

bnum = b.ranNumber()

您需要使GetRandom.ranNumber接受调用该方法时隐式传递的self参数:

def ranNumber(self):
    return random.random()



解决这些问题后,代码将按预期工作:

>>> import random
>>> class GetRandom:
...     def __init__(self):
...         self.data = ""
...     def ranNumber(self):
...         return random.random()
...
>>> b = GetRandom()
>>> bnum = b.ranNumber()
>>> print bnum
0.819458844177
>>>

09-06 04:43