【问题标题】:TypeError ( 'module' object is not callable )TypeError(“模块”对象不可调用)
【发布时间】:2014-09-21 01:21:41
【问题描述】:

我有两个脚本。脚本 1 的标题为 schemeDetails。第二个脚本是一个名为 temporaryFile 的测试脚本,它使用 schemeDetails 中的 schemeSetup 类创建一个 schemeSetup 对象。在我尝试访问 schemeSetup 类中的方法 insertScheme 之前,一切都非常糟糕。

我已使用以下命令导入了 schemeDetails 脚本:

import schemeDetails
reload(schemeDetails)
from schemeDetails import *

我可以创建 schemeDetails 对象并访问它的属性

d = schemeDetails.schemeSetup() -- fine
print(d.scheme) -- fine
d.insertScheme() -- throws error

但尝试调用 insertScheme 函数会引发错误

我不知道为什么会发生这种情况,因为 import 语句在我看来是光明正大的。任何建议表示赞赏

from sikuli import *
import os

class schemeSetup(object):
    #Uses default values
    def __init__(
        self,
        scheme = "GM",
        cardNumber = "1234567A",
        month = "December",
        year = "2015",
        setSchemeAsDefault = True):

        #Provide default values for parameters
        self.scheme = scheme
        self.cardNumber = cardNumber
        self.month = month
        self.year = year
        self.setSchemeAsDefault = setSchemeAsDefault
        #schemeDetails is not a sub
        # class of patient. It is simply defined within the patient class 
        # - there is a huge difference. 

#====================================================#        
        #schemeDetails Function
    def insertScheme(self):
        print("insertScheme Works")    
        #r = Regions()
        #r.description("Patient Maintenance", "schemeDetails")
        #myRegion = r.createRegion()
        #myRegion.highlight(1)  

        #click(myRegion.find(insertSchemeButton))
        #click(myRegion.find(blankSchemeEntry))
        #type(self.scheme + Key.ENTER + Key.ENTER)           
        #type(self.cardNumber + Key.ENTER)
        #type(self.month + Key.ENTER)
        #type(self.year + Key.ENTER)
        #type(" ")
        #unticks HT link, HT linking should be in a separate function

#====================================================#           
        #schemeDetails Function
    def editScheme(self):
        print("editScheme Works")

#====================================================#        
    def deleteScheme(self):
        pass
#====================================================#  

调用任何一个底部函数都不会产生错误可能很重要。如果我将 print("Hello") 放在 editScheme 下,并使用 s.editScheme 调用该方法,程序编译但我没有得到任何输出。如果我运行 print(s.editScheme) 它返回 None

【问题讨论】:

  • 您为什么要使用所有这三个语句进行导入?
  • 我认为这是必要的。我猜不会!我有一种感觉,就是这样,我只是不必要地彻底
  • 你应该只需要一个,是的。 import Patient 是最安全的。但是您必须在其中为每个func() 加上前缀,即Patient.func()from Patient import * 不建议使用,但如果您的项目范围较小且您只是导入函数,则可以使用。
  • 错误是什么?请向我们展示追溯。您可能还想查看 PEP 8 (legacy.python.org/dev/peps/pep-0008)。您使用了许多非pythonic的命名约定......并且您的类都应该从对象继承。
  • 我在几个不同的类中使用了全局变量,所以我将使用 from xxx import * 为那些类,并尽量让其他类保持简单

标签: python module sikuli callable


【解决方案1】:

好吧,在将导入格式更改为此之后,它现在似乎已修复

    import schemeDetails 
    from schemeDetails import schemeSetup
    s = schemeDetails.schemeSetup()

【讨论】:

    猜你喜欢
    • 2017-06-17
    • 2011-05-30
    • 2021-11-22
    • 2017-05-08
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多