在Python中的类中生成一个数字会导致一个奇怪的错误
所以我对Python中的类是新手,但对一般的类并不陌生。 我想在我创建的对象中生成一个新的数字,并不断更改它 所以我做了在Python中的类中生成一个数字会导致一个奇怪的错误,python,function,class,Python,Function,Class,所以我对Python中的类是新手,但对一般的类并不陌生。 我想在我创建的对象中生成一个新的数字,并不断更改它 所以我做了 class ArmedBandit1: num = 0 def spin(): num = random(10) a1 = ArmedBandit1() a1.spin() print(a1.num) 现在我得到一个错误 Traceback (most recent
class ArmedBandit1:
num = 0
def spin():
num = random(10)
a1 = ArmedBandit1()
a1.spin()
print(a1.num)
现在我得到一个错误
Traceback (most recent call last):
File "main.py", line 9, in <module>
a1.spin()
TypeError: spin() takes 0 positional arguments but 1 was given
回溯(最近一次呼叫最后一次):
文件“main.py”,第9行,在
a1.自旋()
TypeError:spin()接受0个位置参数,但给出了1个
但是我没有给它任何参数,如果我试图删除“()”它会忽略该方法。正如@Mike67在评论中建议的那样,您需要包含参数
self
,使该方法适用于类的特定实例。为了让对象为其分配变量,您必须创建一个init()函数。您还必须使用self关键字来引用正在创建的对象。下面是一个代码示例:
import random
class ArmedBandit1:
def __init__(self):
self.num = 0
def spin(self):
self.num = random.randrange(10)
a1 = ArmedBandit1()
a1.spin()
print(a1.num)
使用self作为第一个参数进行定义!定义init并分配属性!(要获取某个范围内的随机数,请使用
random.randrange(10)
)
固定代码
import random
class ArmedBandit1:
def spin(self):
return random.randrange(10)
a1 = ArmedBandit1()
print(a1.spin())
谢谢你对以上的帮助 尝试
defspin(self):
为什么要为此使用class属性?它应该是self.num
,因此可以有多个具有不同旋转的实例。
import random
class ArmedBandit1:
def spin(self):
return random.randrange(10)
a1 = ArmedBandit1()
print(a1.spin())