繁体   English   中英

AttributeError:“模块”对象没有属性“新”

[英]AttributeError: 'module' object has no attribute 'new'

我有一些要运行的代码。 我是python和stackoverflow的新手

这是python程序:

# Circle Inversion Fractals (Apollonian Gasket) (Escape-time Algorithm)
# FB36 - 20131031
import math
import random
from collections import deque
from PIL import Image
imgx = 512; imgy = 512
image = Image.new("RGB", (imgx, imgy))
pixels = image.load()
n = random.randint(3, 6) # of main circles
a = math.pi * 2.0 / n
r = math.sin(a) / math.sin((math.pi - a) / 2.0) / 2.0 # r of main circles
h = math.sqrt(1.0 - r * r)
xa = -h; xb = h; ya = -h; yb = h # viewing area
cx = [0.0]; cy = [0.0]; cr = [1.0 - r] # center circle
for i in range(n): # add main circles
    cx.append(math.cos(a * i))
    cy.append(math.sin(a * i))
    cr.append(r)
maxIt = 64 # of iterations
for ky in range(imgy):
    print str(100 * ky / (imgy - 1)).zfill(3) + "%"
    for kx in range(imgx):
        x = float(kx) / (imgx - 1) * (xb - xa) + xa
        y = float(ky) / (imgy - 1) * (yb - ya) + ya
        queue = deque([])
        queue.append((x, y, 0))
        while len(queue) > 0: # iterate points until none left
            (x, y, i) = queue.popleft()
            for k in range(n + 1):
                dx = x - cx[k]; dy = y - cy[k]
                d = math.hypot(dx, dy)
                if d <= cr[k]:
                    dx = dx / d; dy = dy / d
                    dnew = cr[k] ** 2.0 / d
                    xnew = dnew * dx + cx[k]
                    ynew = dnew * dy + cy[k]
                    if xnew >= xa and xnew <= xb and ynew >= ya and ynew <= yb:
                        if i + 1 == maxIt: break
                        queue.append((xnew, ynew, i + 1))
        pixels[kx, ky] = (i % 16 * 16 , i % 8 * 32, i % 4 * 64)
image.save("CircleInversionFractal_" + str(n) + ".png", "PNG")

当我运行它时,我收到一条错误消息,但是我不知道如何解决它。

 Traceback (most recent call last):
 File "U:\Personal\PythonFiles\Python Program Examples\Circle Inversion Fractals.py",   line 9, in <module>
 image = Image.new("RGB", (imgx, imgy))
 AttributeError: 'module' object has no attribute 'new'

此回溯是什么意思?

这意味着您正在尝试在模块对象上使用new名称:

>>> import sys
>>> sys.new
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'new'

这意味着sys模块此处没有new属性。 是否将new视为可调用对象(函数,方法,类等)都没有关系,在表达式sys.new() ,名称new将首先被视为属性。

如果您尝试使用记录有.new()方法的模块(例如sha.new()hashlib.new() ,请确保您的模块中没有其他同名模块尝试导入标准库模块sha时,请勿命名自己的脚本sha.py

您可以通过打印.__file__文件名来检查从哪里导入模块:

 print sha.__file__

并且如果它不是 Python安装中的文件名,则可能需要调查为什么在路径中还有一个额外的文件,然后重命名该文件或将其移到一边。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM