title: OOP : Trying to design a good class structure
body: <p>Follow up code snippet review question I posted: <a href="https://codereview.stackexchange.com/questions/143576/oop-designing-class-inheritances">https://codereview.stackexchange.com/questions/143576/oop-designing-class-inheritances</a></p>
  
  <p>This is homework so off the bat I am not asking to do it for me but to clarify for me so that I understand.</p>
  
  <p>Here is what the assignment said about the program I have to write:</p>
  
  <p><strong>Required:</strong>
  Write an OO Python Program showing how your sub-classes inherit from the super-class(es) You can have one class (preferred but not a must) or two or more super classes.</p>
  
  <p>What I have to do is write a oo python program showing sub-classing inherited by a class or two or more superclasses. The program has to be about shapes. As an example of what I mean by that is:</p>
  
  <p>Shape: Square</p>
  
  <p>Attributes:</p>
  
  <ul>
  <li>length </li>
  <li>width</li>
  </ul>
  
  <p>Methods:</p>
  
  <ul>
  <li>area</li>
  <li>perimeter</li>
  </ul>
  
  <p>I have more shapes of course but from that I find the common attributes and methods from all the shapes and make superclasses and sup-classes.</p>
  
  <p>My super classes are like: 2dShapes, circles and 3dShapes. My sub-classes are like length and width. My methods are area and perimeter. Note I am rambling at this point. The code snippet below does not show this instead I was thinking about making a superclass for attributes and methods and than sub-classes for the shapes? maybe?</p>
  
  <p>Question: is this a good class structure? Is there a better way to structure the classes here? Here is an example of what I'm thinking about how to do this.</p>
  
  <pre><code>class Shapes(attributes):
      def __init__(self):
          attributes.__init__(self)
          # not sure how to go on to make the attributes like height and length, radius ect. Maybe like this???
      def height(self):
          raise NotImplementedError # again this program is not supose to actually do anything. The program is just for us to understand inheritance with classes and super classes.
  
  class 2dShapes(Shapes):
      class Square(self):
          def height(self):
              # ???
  </code></pre>
  
  <p>So at this point I am so confused about where to start. Also I am super new to python so be gentle to me  :p</p>