【发布时间】:2011-02-08 22:09:40
【问题描述】:
我正在使用 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'
但我找不到任何适用于新式课程的东西。我找到了this question,但建议的解决方案似乎没有按预期工作,因为简单的值被标识为类。
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 中的所有内容都只是一个类,没有办法绕过它?
【问题讨论】:
-
我正在研究一个递归序列化其子级的类,我希望能够判断该子级是否是一个类,并通过递归序列化其子级来处理它。
-
您之前的评论似乎应该是实际问题,而原始问题看起来像是您为解决问题而采取的(可能是错误的)步骤。检查这个:catb.org/~esr/faqs/smart-questions.html#goal
-
你可能想给我们一个class有另一个class作为孩子的例子;另外,请确保您不是在谈论 instances。 instance 拥有要序列化的子 instances 更为常见。
-
我很抱歉,因为我的意思是一个实例而不是类本身。
标签: python class python-2.x