Is it OK to extend both old and new style classes?
<p>When I extended some tool generated classes, I didn't realize that they are old style classes until I tried to use super(). The super() doesn't work with old style classes, so I got this error:</p>

<pre><code>TypeError: super() argument 1 must be type, not classobj
</code></pre>

<p>E.g., try this snippet:</p>

<pre><code>&gt;&gt;&gt; class A:
...     def greet(self):
...         print "A says hi"
...
&gt;&gt;&gt; class B(A):
...     def greet(self):
...         print "B says hi"
...
&gt;&gt;&gt; super(B, B()).greet()
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
TypeError: super() argument 1 must be type, not classobj
</code></pre>

<p>I was just curious what would happen if I extended B from object as well to make it a new style class, and it seemed to make super() work.</p>

<pre><code>&gt;&gt;&gt; class B(A, object):
...     def greet(self):
...         print "B says hi"
...
&gt;&gt;&gt; super(B, B()).greet()
A says hi
</code></pre>

<p>Is this an appropriate workaround or will I have some unwanted consequences later?    </p>
