给定一个对象很容易得到蟒蛇的对象类型:如何在不用Python实例化的情况下获取类的类型?
obj = SomeClass()
t = type(obj)
我怎么能做到这一点,而不首先创建类的实例?
背景:一旦你有了类型,你就可以轻松地创建该类型的实例。使用这种机制,我想将一个类型传递给稍后将创建该类型实例的对象。没有必要首先创建一个对象,这将是非常合理的,它会立即被抛弃。
给定一个对象很容易得到蟒蛇的对象类型:如何在不用Python实例化的情况下获取类的类型?
obj = SomeClass()
t = type(obj)
我怎么能做到这一点,而不首先创建类的实例?
背景:一旦你有了类型,你就可以轻松地创建该类型的实例。使用这种机制,我想将一个类型传递给稍后将创建该类型实例的对象。没有必要首先创建一个对象,这将是非常合理的,它会立即被抛弃。
请参见本示例代码:
class MyClass(object):
pass
if __name__ == '__main__':
o1 = MyClass()
c = MyClass
o2 = c()
print(type(o1), type(o2), MyClass)
定义一个类绑定到其名称(这里:MyClass
),这是什么都没有,但该定义的参考。在此示例中,发行c = MyClass
只是将类引用映射到另一个变量,变量c
和MyClass
的内容现在完全相同。因此,您可以通过调用其中的任何一个(即MyClass()
或c()
)来实例化该类的对象,从而产生相同的效果。
此外,测试实例化对象的类型导致完全相同的类引用。你甚至可以更进一步,做:
o3 = type(o1)()
它创建类的o1
是一个新的实例。
感谢您更详细地解释! –
't = SomeClass' – vaultah
对象的类型与创建它的类相同。因此,SomeClass对象的类型是SomeClass。在Python 2中,来自旧样式类的对象的类型为'instance',但在Python 3中不是这样。 – zondo