用户定义的类对象的类型 - Python

时间:2013-12-09 04:37:06

标签: oop python-2.7

我对课程或OOP不是很有经验,
而且我对我得到的一些结果感到困惑。

我正在尝试在我创建的类上使用type()

    class TestClass:
        pass

    my_class = TestClass()
    print type(my_class)

上面的代码返回

    <type: 'instance'>

根据我的理解my_class应该初始化为TestClass对象..对吗?为什么不是输出TestClass。另外,如果可能的话,我需要更改什么来获得此结果?

2 个答案:

答案 0 :(得分:0)

如果你想让TestClass成为一个对象,你必须像这样指定它

class TestClass(object):
    pass

答案 1 :(得分:0)

来自the documentation

  

类和实例有两种形式:旧式(或经典)和   新型

     

在Python 2.1之前,旧式类是唯一可用的风格   用户。 (旧式)类的概念与概念无关   类型:如果x是旧式类的实例,那么x.__class__   指定x的类,但type(x)始终为<type 'instance'>。   这反映了所有旧式实例的独立性   他们的类,用一个内置类型实现,称为   实例

如果不从object继承,则会创建一个旧式类,因此type(my_class)的行为与此类似。

继承object,你的问题就会消失:

class TestClass(object):
    pass

在Python 3中,所有类都是新式的类,这很好。