Python中的静态方法

时间:2015-09-17 23:12:37

标签: python static-methods

我正在尝试模拟骰子的滚动并使用了此代码

class dicesimulator:
    def __init__(self, list = [0,0,0,0,0,0]):
        self.list = list

    @staticmethod
    def diceroller():
        outcome = random.randit(0,5)
        print outcome + 1


mydice = dicesimulator()
print mydice.diceroller

然而,当我运行代码时,它返回而不是数字。为什么会这样呢?另外据我所知,我也应该能够在静态方法上调用类本身,即dicesimulator.diceroller。但是,它也会返回

4 个答案:

答案 0 :(得分:0)

所以有几个问题。首先,使用静态方法并不是一个非常好的理由。它与制作一个功能基本上没什么不同。其次,您实际上并没有从diceroller()方法中返回数字。第三,你实际上并没有调用diceroller,因为你忘了把parens放在一边,而是直接打印函数(它的字符串表示)。

答案 1 :(得分:0)

你忘了那些parens。

$( "#relations ol" ).droppable({
  activeClass: "ui-state-default",
  hoverClass: "ui-state-hover",
  accept: ":not(.ui-sortable-helper)",
  drop: function( event, ui ) {
    $( this ).find( ".placeholder" ).remove();
    $( "<li></li>" ).text( ui.draggable.text() ).appendTo( this );
  }

答案 2 :(得分:0)

我很高兴你找到了压痕修复。 (1)您询问了diceroller对象,而不是调用该方法。 (2)没有“randit”。试试“randint”。

import random

class dicesimulator:
    def __init__(self, list = [0,0,0,0,0,0]):
        self.list = list

这会产生输出

6
None

请注意,您尚未从函数diceroller返回任何内容。你还没有使用过dicesimulator.list。

考虑在互联网上搜索实现。

答案 3 :(得分:0)

没有必要通过不必要地使用类和静态方法使事情复杂化。

from random import randint
print(randint(1,6))