Skip to main content
 首页 » 编程设计

python之模块在 Python 中不可调用

2025年05月04日9kerrycode

我遇到了 Python 错误。请参阅下面的代码示例。我运行 event_timer.py 并收到以下错误消息。下面列出的两个文件都在同一个文件夹中。

Traceback (most recent call last): 
  File "E:\python\event_timer\event_timer.py", line 7, in  
    timer = EventTimer() 
TypeError: 'module' object is not callable 

What am I missing?

event_timer.py:

import EventTimer 
 
timer = EventTimer() 
 
timer.addStep("Preheat Oven", seconds = 10) 
timer.addStep("Cook Pizza", seconds = 20) 
timer.addStep("Done!") 
 
timer.start() 

事件定时器.py:

import time 
 
class Timer: 
 
    event = 'Event' 
    steps = [] 
 
    def __init__(self, event = None): 
 
        if event is not None: 
 
            self.event = event 
 
    def addStep(self, step, seconds = None, minutes = None, hours = None, days = None): 
 
        if seconds is not None: 
 
            unit = 'seconds' 
            amount = seconds 
 
        elif minutes is not None: 
 
            unit = 'minutes' 
            amount = minutes 
 
        elif hours is not None: 
 
            unit = 'hours' 
            amount = hours 
 
        elif days is not None: 
 
            unit = 'days' 
            amount = days 
 
        else: 
 
            print 'Invalid arguments' 
 
            return False 
 
        self.steps.append({'unit': unit, 'amount': amount}) 
 
        return True 
 
    def __timeInSeconds(self, unit, amount): 
 
        if unit == 'seconds': 
 
            return amount 
 
        elif unit == 'minutes': 
 
            return amount * 60 
 
        elif unit == 'hours': 
 
            return amount * 60 * 60 
 
        elif unit == 'days': 
 
            return amount * 60 * 60 * 24 
 
        else: 
 
            print 'Invalid unit' 
 
            return False 
 
    def start(self): 
 
        if len(self.steps) == 0: 
 
            print 'No steps to complete' 
 
            return False 
 
        print "{0} has started.".format(self.event) 
 
        for step in self.steps: 
 
            print step.step 
 
            time.sleep(self.__timeInSeconds(step.unit, step.amount)) 
 
            print "Completed" 
 
        print 'Event complete' 

请您参考如下方法:

当你写作时

import EventTimer 

您创建了一个新变量,EventTimer,指向一个模块——您刚刚编写的模块!该模块内部是一个类 Timer。所以要创建该类的实例,您可以

timer = EventTimer.Timer()