In dir tree looks like this
PyPong + Main.py + Rectangle.py
Now, I have imported Rectangle.py like this in Main.py
import pygame, sys, Rectangle
However, whenever I try making an instance of the class Rectangle.py like here
rectangles.append(Rectangle(400 + x * rectangleWidth + x * 10, 30 + y * rectangleHeight + y * 10, rectangleWidth, rectangleHeight, (randint(0, 255), randint(0, 255), randint(0, 255)), screen))
into this array
rectangles = []
I recieve this error:
TypeError: 'module' object is not callable
Any help is greatly appreciated
Also, here is the full Rectangle.py
class Rectangle:
y = 0
x = 0
width = 0
height = 0
color = 0
screen = 0
GO_UP = 1
GO_DOWN = 2
GO_LEFT = 3
GO_RIGHT = 4
closeX = 0
closeY = 0
removed = False
def __init__(self, x, y, width, height, color, screen):
self.x = x
self.y = y
self.height = height
self.width = width
self.color = color
self.screen = screen
def render(self):
pygame.draw.rect(self.screen, self.color, (self.x, self.y, self.width, self.height), 0)
pass
def intersects(self, x, y, r):
#TOP SIDE
self.closeX = 0
self.closeY = 0
intersectsTop = True;
if x <= self.x: self.closeX = self.x
elif x >= self.x + self.width: self.closeX = self.x + self.width
else: self.closeX = self.x
self.closeY = self.y
if abs(x - self.closeX) >= r: intersectsTop = False
if abs(y - self.closeY) >= r: intersectsTop = False
if intersectsTop:
self.remove()
return self.GO_UP
#LEFT SIDE
self.closeX = 0
self.closeY = 0
intersectsLeft = True
if y <= self.y: self.closeY = self.y
elif y >= self.y + self.height: self.closeY = self.y + self.height
else: self.closeY = y;
self.closeX = self.x
if abs(x - self.closeX) >= r: intersectsLeft = False
if abs(y - self.closeY) >= r: intersectsLeft = False
if intersectsLeft:
self.remove()
return self.GO_LEFT
#RIGHT SIDE
self.closeX = 0
self.closeY = 0
intersectsRight = True
if y <= self.y: self.closeY = self.y
elif y >= self.y + self.height: self.closeY = self.y + self.height
else: self.closeY = y;
self.closeX = self.x + self.width
if abs(x - self.closeX) >= r: intersectsRight = False
if abs(y - self.closeY) >= r: intersectsRight = False
if intersectsRight:
self.remove()
return self.GO_RIGHT
#BOTTOM SIDE
self.closeX = 0
self.closeY = 0
intersectsBottom = True;
if x <= self.x: self.closeX = self.x
elif x >= self.x + self.width: self.closeX = self.x + self.width
else: self.closeX = self.x
self.closeY = self.y + self.height
if abs(x - self.closeX) >= r: intersectsBottom = False
if abs(y - self.closeY) >= r: intersectsBottom = False
if intersectsBottom:
self.remove()
return self.GO_DOWN
pass
def remove(self):
self.removed = True
pass
You need to import the class from the module:
from Rectangle import Rectangle
or refer to the class as an attribute of the module you imported:
rectangles.append(Rectangle.Rectangle(400 + x * rectangleWidth + x * 10, 30 + y * rectangleHeight + y * 10, rectangleWidth, rectangleHeight, (randint(0, 255), randint(0, 255), randint(0, 255)), screen))
This is one reason for the Python style guide PEP-8 to recommend that you use all-lowercase names for your module files, to avoid confusing the module with the contents of the module.
You imported the Rectangle
module, but not the Rectangle
class within the Rectangle module.
To reference classes within a module, the general syntax is module.Class
. So you can change your references to Rectangle.Rectangle
or instead import the class directly:
from Rectangle import Rectangle
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.