`

class Foo:pass 与class Foo(object):pass的区别

 
阅读更多

>>> class Foo:pass

>>> foo = Foo()
>>> type(Foo)
<type 'classobj'>

>>> type(foo)
<type 'instance'>

>>> class Bar(object):pass

>>> bar = Bar()
>>> type(Bar)
<type 'type'>
>>> type(bar)
<class '__main__.Bar'>

 

 

为何type(Foo) 返回是<type 'classobj'>

type(Bar) <type 'type'>

type(foo) 返回<type 'instance'>type(bar) 返回<class '__main__.Bar'>

 

python2.2引入了new-style class.如果一个类继承了object对象,那么它就是一个new-style class.
内建的object对象.
object类是所有new-style class的祖先.object对象定义了一系列特殊的方法来实现所有对象的默认行为.
静态方法__new__用来创造类的实例.__init__方法用来初始化自己.

分享到:
评论

相关推荐

    Python反射和内置方法重写操作详解

    class Foo(object): pass obj = Foo() isinstance(obj, Foo) issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass issubclass(Bar, Foo) 反射 1 什么是...

    详解Python中的__new__、__init__、__call__三个特殊方法

    __new__: 对象的创建,是一个静态方法,第一个参数是cls。(想想也是,不可能是self,对象还没创建,哪来的self) ...class Foo(object): def __new__(cls, *args, **kwargs): return Bar() print

    python的property属性与用法.doc

    class Foo: def func(self): pass @property def prop(self): pass foo_obj = Foo() foo_obj.func() # 调用实例方法 foo_obj.prop # 调用 property 属性 ``` 在上面的例子中,`prop`就是一个`property`属性...

    python实现动态创建类的方法分析

    本文实例讲述了python实现动态创建类的方法。分享给大家供大家参考,具体如下: python作为动态语言,如何在运行时动态创建类呢(python Creating ... class Foo(object): pass return Foo # 返回一个类,而不是

    python数据类型判断type与isinstance的区别实例解析

    class Foo(object): pass class Bar(Foo): pass print(type(Foo()) == Foo()) # 输出True,因为都是Foo实例 print(type(Bar()) == Foo()) # 输出False,因为Bar()是Bar的实例,不是Foo的实例 ``` 相比之下,`...

    简单了解python单例模式的几种写法

    方法一:使用装饰器 装饰器维护一个字典对象instances,缓存了所有单例类,只要单例不存在则创建,已经存在直接返回该实例对象。 def singleton(cls): ...class Foo(object): pass foo1 = Foo() foo2 = Foo() print

    Python基础教程(第2版)第九章魔法方法、属性和迭代器.pdf

    3. 在类内部设置`__metaclass__`变量,如`class Foo(object): __metaclass__ = type` `__init__`方法是构造方法,用于初始化新创建对象的状态。当一个对象被创建后,`__init__`方法会被立即调用。例如: ```python ...

    Python实例一个类背后发生了什么

    class Foo(object): def __init__(self): pass obj = Foo() # obj是通过Foo类实例化的对象 上述代码中,obj 是通过 Foo 类实例化的对象,其实,不仅 obj 是一个对象,Foo类本身也是一个对象,因为在Python中一切...

    python类装饰器用法实例

    本文实例讲述了python类装饰器用法。...class Foo(object): __clsid__ = '123-456' def bar(self): pass print registry 运行结果如下: {‘123-456’: &lt;class&gt;} 希望本文所述对大家的Python程序设计有所帮助。

    python基础编程:Python中的对象,方法,类,实例,函数用法分析

    class Foo(object): static_attr = True def method(self): pass foo = Foo() 这段代码实际上创造了两个对象,Foo和foo。而Foo同时又是一个类,foo是这个类的实例。 在C++里类型定义是在编译时完成的,被储存在...

    python进阶_浅谈面向对象进阶

    # print(egg.name) # AttributeError: 'Foo' object has no attribute 'name' ``` #### 反射应用实例 接下来,我们通过两个具体的应用场景来展示如何使用反射。 ##### 实例1:反射操作类属性和方法 ```python ...

    Google C++ Style Guide(Google C++编程规范)高清PDF

    On the other hand, you must include the header file for Foo if your class subclasses Foo or has a data member of type Foo. Sometimes it makes sense to have pointer (or better, scoped_ptr) members ...

    python的多重继承的理解

    print(D.__mro__) # 输出:(&lt;class '__main__.D'&gt;, &lt;class '__main__.C1'&gt;, &lt;class '__main__.C2'&gt;, &lt;class '__main__.P1'&gt;, &lt;class '__main__.P2'&gt;, &lt;class 'object'&gt;) d = D() d.foo() # 输出:p1-foo d.bar() # ...

    Python中动态获取对象的属性和方法的教程

    def foo(): pass # 函数,foo指向这个函数对象 class Cat(object): # 类,Cat指向这个类对象 def __init__(self, name='kitty'): self.name = name def sayHi(self): # 实例方法,sayHi指向这个方法对象,使用...

    举例讲解Python中metaclass元类的创建与使用

    class Foo(object): # 给类指定元类 __metaclass__ = ReqStrSugRepr def foo(self): pass def __str__(self): return "This is Foo instance" def __repr__(self): return "&lt;Foo object&gt;" ``` #### ...

    Python中的自省(反射)详解

    class Cat(object): #  类,Cat指向这个类对象  def __init__(self,  name=’kitty’):  self.name = name  def sayHi(self): #  实例方法,sayHi指向这个方法对象,使用类或实例.sayHi访问  

    Python中的对象,方法,类,实例,函数用法分析

    复制代码 代码如下:class Foo(object):  static_attr = True  def method(self):  pass foo = Foo() 这段代码实际上创造了两个对象,Foo和foo。而Foo同时又是一个类,foo是这个类的实例。 在C++里类型定义是在...

Global site tag (gtag.js) - Google Analytics