2015-09-17 9 views
0

Я пытаюсь моделировать прокатку фильеры и использовали этот кодСтатические методы в Python

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. Однако он также возвращает

ответ

0

Итак, есть пара вопросов. Во-первых, на самом деле нет действительно веских оснований использовать статические методы. Это по сути ничем не отличается от просто функции. Во-вторых, вы фактически не возвращаете число из вашего метода diceroller(). В-третьих, вы на самом деле не называете diceroller, потому что вы забыли поставить парсеры, вместо этого вы просто печатаете функцию напрямую (строковое представление).

0

Вы забыли о парсе.

mydice.diceroller() 
+0

Спасибо! Пробовал это, но он вернулся, получилось, что в приведенном выше коде я написал randit, а не randint! – Jack

0

Я рад, что вы нашли исправление отпечатка. (1) Вы попросили объект diceroller, а не вызов метода. (2) Нет «рандита». Попробуйте «randint».

import random 

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

Это дает OUTPUT

6 
None 

Обратите внимание, что вы не возвращенную ничего из функции diceroller. Вы еще не использовали dicesimulator.list для чего-то еще.

Рассмотрите возможность поиска в Интернете для реализации.

0

Нет необходимости усложнять вещи путем ненужного использования классов и статических методов.

from random import randint 
print(randint(1,6)) 
Смежные вопросы