Type error : importing things and doesn't work

Type error : importing things and doesn't work

伙计们,你能帮忙吗? 你看我创建了一个模块(如果你想知道如何获取 Hello world book 2nd edition)并导入它但功能不起作用。这是模块和脚本

coin.py

class Coin:
    def flip_coin(self, op):
        a = random.choice(op)
        easygui.msgbox(a) 

脚本

import random
import easygui
from coin import Coin

op = ["Heads", "Tails"]

easygui.msgbox("Ready?")
Coin.flip_coin()

你们想看错误:

    Traceback (most recent call last): File "C:\Python27\Hello world\coin", line 9, in <module> flip_coin() TypeError: flip_coin() takes exactly 2 arguments (0 given) 

问题是(除了您的问题没有实际错误 ;-) 之外)您还没有实例化 Coin class 的对象,并且您不要传入 op.

此外,由于 Coin 存在于单独的模块中,因此如果您使用它们,也需要导入 randomeasygui

coin.py

import random
import easygui


class Coin:
    def flip_coin(self, op):
        a = random.choice(op)
        easygui.msgbox(a)

脚本

import easygui
from coin import Coin

coin = Coin()  # instantiate the class

easygui.msgbox("Ready?")
coin.flip_coin(["Heads", "Tails"])

但是,当您实际上不需要存储状态时使用 class 并不是 Pythonic。

相反,您可以只留下 def flip_coin(op): 一个自由函数 -- 而且,因为硬币通常没有比正面或反面更多的选择:

import random
import easygui

def flip_coin():
    a = random.choice(["Heads", "Tails"])
    easygui.msgbox(a) 

easygui.msgbox("Ready?")
flip_coin()