我如何在没有类方法的情况下使用 defs 上的类方法,但在添加时不起作用
How do I use classmethods on defs that work without classmethods but don't work when added
我想向这段代码中添加类方法,但不知道如何让它工作。
代码按原样运行良好,但需要评论中所述的类方法
# class definition for an n-sided die
# import packages
import random
class MSdie(object):
#constructor here
def __init__( self ):
self.sides = 6
self.roll()
#define classmethod 'roll' to roll the MSdie
def roll( self ):
self.value = 1 + random.randrange(self.sides)
return self.value
#define classmethod 'getValue' to return the current value of the MSdie
def getValue( self ):
return self.value
#define classmethod 'setValue' to set the die to a particular value
#def setValue(self):
def roller():
r1 = MSdie()
for n in range (4):
print(r1.roll())
roller()
我同意这些方法不应成为class方法的评论。
但是如果你必须,你不能在那里使用 self
。 Self 指的是一个对象,但是 class 方法不是在对象上调用的,它们是为 class 调用的。所以你不能再将 value
存储在对象中,因为你有 none.
我想向这段代码中添加类方法,但不知道如何让它工作。 代码按原样运行良好,但需要评论中所述的类方法
# class definition for an n-sided die
# import packages
import random
class MSdie(object):
#constructor here
def __init__( self ):
self.sides = 6
self.roll()
#define classmethod 'roll' to roll the MSdie
def roll( self ):
self.value = 1 + random.randrange(self.sides)
return self.value
#define classmethod 'getValue' to return the current value of the MSdie
def getValue( self ):
return self.value
#define classmethod 'setValue' to set the die to a particular value
#def setValue(self):
def roller():
r1 = MSdie()
for n in range (4):
print(r1.roll())
roller()
我同意这些方法不应成为class方法的评论。
但是如果你必须,你不能在那里使用 self
。 Self 指的是一个对象,但是 class 方法不是在对象上调用的,它们是为 class 调用的。所以你不能再将 value
存储在对象中,因为你有 none.