AttributeError:类实例没有__call__方法

9 python oop pygame attributeerror python-2.7

我对python有点新,但熟悉OOP.我正在尝试使用PyGame编写游戏.基本上,我的目标是每隔几秒钟渲染一次树木,并将树木移动到整个屏幕上.

所以这是我的代码:

from collections import deque
import pygame,random,sys

pygame.init()
size = 800,600
screen = pygame.display.set_mode(size)

class tree:
    def __init__(self):
            self.img = pygame.image.load("tree.png")
            self.rect = self.img.get_rect()
    def render(self):
            screen.blit(self.img,self.rect)
    def move(self,x,y):
            self.rect = self.rect.move(x,y)

#creating a queue of trees
trees = deque()

#appending the first tree on to the queue 
trees.append(tree())


while 1:


    for event in pygame.event.get():
            if event.type == pygame.QUIT: sys.exit()

    #appending tree() to trees queue every 300 ms
    if pygame.time.get_ticks() % 300 == 0:
            trees.append(tree())

    #rendering and moving all the tree rects of trees in the queue
    for tree in trees:
            tree.render()
            tree.move(20,2)
    pygame.display.flip()
Run Code Online (Sandbox Code Playgroud)

但是当我执行它时,前几个树成功生成,但PyGame窗口关闭,我收到此错误:

Traceback (most recent call last):
File "error.py", line 25, in <module>
trees.append(tree())
AttributeError: tree instance has no __call__ method
Run Code Online (Sandbox Code Playgroud)

Emm*_*uel 22

我想这是因为你有一个与你的类名冲突的变量名tree(用于tree.render()).调用它Tree会更好(更pythonic ^^).