Problem with importing in Python

Dave Angel d at davea.name
Fri Jan 11 23:43:10 CET 2013


On 01/11/2013 05:17 PM, su29090 wrote:
> I'm trying to import a python file it keeps saying:
>
> ImportError: cannot import name Circle
>
> Here is the file I'm trying to import:
>
> Circle.py
>
> import math
>
> class circle:
>     #Construct a circle object
>     def __init__(self, radius = 1):
>         self.radius = radius
>
>     def getPerimeter(self):
>         return 2 * self.radius * math.pi
>
>     def getArea(self):
>         return self.radius * self.radius * math.pi
>
>     def setRadius(self, radius):
>         self.radius = radius
>
> from Circle import Circle
>
> def main():
>     #Create a circle with a radius 1
>     circle1 = Circle()
>     print("The area of the circle of radius",
>           circle1.radius, "is" , circle1.getArea())
>
>     #Create a circle with a radius 25
>     circle2 = Circle(25)
>     print("The area of the circle of radius",
>           circle2.radius, "is" , circle2.getArea())
>
>     #Create a circle with a radius 125
>     circle3 = Circle(125)
>     print("The area of the circle of radius",
>           circle3.radius, "is" , circle3.getArea())
>
>     #Modify circle radius 
>     circle2.radius = 100 # or Circle2.setRadius(100)
>     print("The area of the circle of radius",
>           circle2.radius, "is" , circle2.getArea())
>
>     main() # Call the main function
>
> How can I solve this problem?
>
> Thanks in advance.
>

As Adnan has pointed out, Python is case insensitive.  You're apparently
trying to refer to the class Circle by the name circle, or the other way
around.

Some comments on asking clear questions:

1) Specify the Python version.  I presume 3.3    It probably doesn't
matter here, but it might have.
2) When showing two source files, identify where each starts and ends,
and what the second one is called.
3) When showing an error, include the entire traceback, not just the
last line.

Now, there are conventions to follow as well (see Pep8).  One is that
modules should use all lowercase, and classes should begin with a
capital.  So the source file of your module should be named  
circle.py   and the class  Circle.  When you imported and instantiated
the class, you assumed it was called Circle, but when you defined it,
you mistakenly called it circle.

The next error is the accidental indentation of the call to main().  As
it stands now, it's a recursive call to itself.  And main() will never
be called, because there's no call at top-level.





-- 

DaveA




More information about the Python-list mailing list