5

I'm new to python and I'm trying to create a module and class.

If I try to import mystuff and then use cfcpiano = mystuff.Piano(), I get an error:

AttributeError: module 'mystuff' has no attribute 'Piano'

If I try from mystuff import Piano I get:

ImportError: cannot import name 'Piano'

Can someone explain what is going on? How do I use a module and class in Python

mystuff.py

def printhello():
    print ("hello")

def timesfour(input):
    print (input * 4)


class Piano:
    def __init__(self):
        self.type = raw_input("What type of piano? ")

    def printdetails(self):
        print (self.type, "piano, " + self.age)

Test.py

import mystuff 
from mystuff import Piano 
cfcpiano = mystuff.Piano()
cfcpiano.printdetails()
GLR
  • 1,070
  • 1
  • 11
  • 29
Earl
  • 73
  • 1
  • 1
  • 4

1 Answers1

1

If you want to create a python module named mystuff

  1. Create a folder with name mystuff
  2. Create an __init__.py file
#__init__.py

from mystuff import Piano #import the class from file mystuff
from mystuff import timesfour,printhello #Import the methods
  1. Copy your class mystuff.py to the folder mystuff
  2. Create file test.py outside the folder(module) mystuff.
#test.py
from mystuff import Piano
cfcpiano = Piano()
cfcpiano.printdetails()
Kajal
  • 709
  • 8
  • 27
  • 2
    `mystuff.py` is not a class but a moule. What you described (the folder with `__init__.py` inside) is not a module but a package. You don't need that to create a python module. – Stop harming Monica Apr 04 '17 at 08:09
  • Thanks, I tried the folder but it just couldn't find the module. I put all the code pages without Init page under one project and it seems to work. Two questions, how does the init page get fired? It seems to cache self data code - eg. If I alter the question to What is the age of the piano? this does not come up , how does one reset this? Thanks for the help guys. – Earl Apr 05 '17 at 00:14