在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

所以我对Python中的类是新手,但对一般的类并不陌生。 我想在我创建的对象中生成一个新的数字,并不断更改它

所以我做了

    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())