title: abstract classes without abstract methods creating objects in python
body: <p>Basically, I knew that abstract base classes are used as skeleton classes just like regular classes, but enforces that abstract methods should be overridden by the child/inherited classes if it has one like below</p>
  
  <pre><code>Class AbstractClass(object):
      __metaclass__ = abc.ABCMeta
  
      @abstractmethod
      def absmethod(self):
          pass
  
  class ChildClass(AbstractClass):
      def absmethod(self):
          print "Yeah!"
  
  obj = ChildClass()
  </code></pre>
  
  <p>So we can create an object of <code>ChildClass</code> as above</p>
  
  <p>We know we can't instantiate an abstract class as it meant to be just skeleton and we will get an error if we try to instantiate it as below</p>
  
  <pre><code>obj = AbstractClass()
  
  *** TypeError: Can't instantiate abstract class AbstractClass with abstract methods absmethod
  </code></pre>
  
  <p>But what my actual query about posting this <code>StackOverflow</code> is if we create an abstract class by using <code>abc.ABCMeta</code>, without abstract methods, I can able to create an instance of the abstract class which should not be the case(correct me if I am wrong)</p>
  
  <pre><code>Class AbstractClass(object):
      __metaclass__ = abc.ABCMeta
  
  obj = AbstractClass()
  </code></pre>
  
  <p><strong>OOOPPPSS</strong> it worked, we can actually create an object of abstract classes without abstract methods? So please let me know the key points behind this</p>