【问题标题】:Why won't my imported function work in main?为什么我的导入函数不能在 main 中工作?
【发布时间】:2022-01-15 12:14:31
【问题描述】:

这是我尝试导入以使其适用于项目的代码。

import random

def ReturnHit(denominator,numerator):

  if (denominator == 0):
    denominator = 1
  if (numerator == 0):
    numerator = 1

  num = random.randint(1,denominator)
 #if num is less than a the numberator then return yes on the hit
  if (num < numerator):
    return True
  else:
    return False


def ReturnApproxCurvedHit(average,lowerLimit,upperLimit):
  #return true or false based on probability position in the bell curve
  n = range(lowerLimit,upperLimit)
  for i in n:
    if(ReturnHit(1,abs(average - i)*2)):
      return True
    else:
      return False

然后是我的主要功能,我在其中设置功能以测试我是否正确导入了所有内容。我的测试功能工作得很好,甚至可以完美地返回所有内容。测试函数说“你好”,当然返回“0”。但是 stat.py 文件不允许我使用 ReturnHit。

#I need to find a way to test the stat.py
import stat
import module


module.say_hello()
z = module.zero()

print(z)

stat.ReturnHit(1,10)

它吐出一个错误:

Traceback (most recent call last):
  File "main.py", line 11, in <module>
    stat.ReturnHit(1,10)
AttributeError: module 'stat' has no attribute 'ReturnHit'

顺便说一句,我正在复刻。

【问题讨论】:

  • 有一个名为stat 的内置模块,这可能是您在执行import stat 时得到的。尝试将您的 stat.py 重命名为不是内置的其他名称,它应该可以工作。

标签: python import attributeerror


【解决方案1】:

stat 模块是 Python 附带的内置模块。由于在解析导入时内置模块 are searched first,因此您在编写 import stat 时得到的是该模块,而不是您本地的 stat.py 模块。

要解决这个问题1,您需要将 stat.py 重命名为其他名称(但不要重命名为 statistics,这会产生同样的问题)。


1或者,您可以绕过默认模块搜索路径并导入您的 stat.py 模块 directly from its file path,但这不是常见或推荐的做法。

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 1970-01-01
    • 2022-01-06
    • 2020-07-30
    • 2022-11-21
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    相关资源
    最近更新 更多