Problem with importing in Python

S

su29090

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.
 
A

Adnan Sadzak

Python is case sensitive.
Circle and circle is not same.




/* sent from android */
 
C

Chris Angelico

Circle.py

class circle:

from Circle import Circle

Inside the Circle module is a class named circle. You can't import
Circle from that.

But Python isn't Java. You don't have to put each class into its own
file. Just put class circle (or class Circle to follow Python naming
convention) into the other file, whose name you haven't given.

If they're already in the same file, then just drop the import. Easy!

By the way:
main() # Call the main function
You'll need to put that flush left. At the moment, that call is part
of the definition of main().

Hope that helps!

ChrisA
 
S

su29090

Python is case sensitive.

Circle and circle is not same.






/* sent from android */


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.

It still keeps showing the same message.
 
S

su29090

Python is case sensitive.

Circle and circle is not same.






/* sent from android */


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.

It still keeps showing the same message.
 
S

su29090

Inside the Circle module is a class named circle. You can't import

Circle from that.



But Python isn't Java. You don't have to put each class into its own

file. Just put class circle (or class Circle to follow Python naming

convention) into the other file, whose name you haven't given.



If they're already in the same file, then just drop the import. Easy!



By the way:


You'll need to put that flush left. At the moment, that call is part

of the definition of main().



Hope that helps!



ChrisA

It worked! Thanks so much! :)
 
S

su29090

Inside the Circle module is a class named circle. You can't import

Circle from that.



But Python isn't Java. You don't have to put each class into its own

file. Just put class circle (or class Circle to follow Python naming

convention) into the other file, whose name you haven't given.



If they're already in the same file, then just drop the import. Easy!



By the way:


You'll need to put that flush left. At the moment, that call is part

of the definition of main().



Hope that helps!



ChrisA

It worked! Thanks so much! :)
 
D

Dave Angel

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.
 
S

su29090

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

Thanks for explanation which was very clear!
 
S

su29090

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

Thanks for explanation which was very clear!
 
T

Terry Reedy

Circle.py

import math

class circle:

By current convention, you should call the file 'circle.py' and the
class 'Circle'. Using all lower case for module filenames is the sanest
thing to do in a world where different filesystems do different things
with casing.
 
C

Chris Angelico

That's not really what you meant to say...

UNinsensitive, your Majesty means, of course. UNinsensitive, of course, I meant.

*watches the jurors write it down, some each way*

ChrisA
 
D

Dave Angel

That's not really what you meant to say...
Nope. I meant Python is case sensitive.

Thanks for the catch. I think the rest of my discourse made it clear
that case matters.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top