Я использую Python 2.x, и мне интересно, есть ли способ узнать, является ли переменная классом нового стиля? Я знаю, что если это класс старого стиля, я могу сделать следующее, чтобы узнать.
import types
class oldclass:
pass
def test():
o = oldclass()
if type(o) is types.InstanceType:
print 'Is old-style'
else:
print 'Is NOT old-style'
Но я не смог найти ничего, что работает для классов нового стиля. Я нашел этот вопрос, но предлагаемые решения, похоже, не работают так, как ожидалось, потому что простые значения, которые идентифицируются как классы.
import inspect
def newclass(object):
pass
def test():
n = newclass()
if inspect.isclass(n):
print 'Is class'
else:
print 'Is NOT class'
if inspect.isclass(type(n)):
print 'Is class'
else:
print 'Is NOT class'
if inspect.isclass(type(1)):
print 'Is class'
else:
print 'Is NOT class'
if isinstance(n, object):
print 'Is class'
else:
print 'Is NOT class'
if isinstance(1, object):
print 'Is class'
else:
print 'Is NOT class'
Так или иначе, чтобы сделать что-то подобное? Или все в Python просто класс, и нет способа обойти это?