A. python 为什么要继承 object 类
python的类最好继承object,继承object 是新式类;如果不继承object,属于旧式类。 至于有哪些区别,你可以网络、google研究。 这么跟你说吧,你写的所有类,尽量、最好都继承object,可以避免一些不明所以的Bug。
B. Python 为什么要继承 object 类
继承 object 类是新式类的写法,经典类的可以不用继承。
在python3中统一成继承object类了,新式类优化了多继承方法的搜索路径及其它一些问题。
C. Python 为什么要继承 object 类
继承 object 类的是新式类,不继承 object 类的是经典类
2.2以前的时候type和object还不统一. 在2.2统一以后到3之间, 要用class Foo(object)来申明新式类, 因为他的type是 < type 'type' > .不然的话, 生成的类的type就是 < type 'classobj' >
Python2 里的新式类, 其特点如下:
low-level constructors named __new__() – 低级别的构造函数.
Note: Python 的 class __init__ 并不是其他语言意义上的构造函数,
在 new 创建实例后对实例属性初始化的函数.
descriptors, a generalized way to customize attribute access – 描述符.
或者说描述符协议支持.descriptor protocol __get__, __set__ ,__delete__ 等,
可以阅读 descriptor 文档
static methods and class methods - 静态方法和类方法
properties (computed attributes) – 属性访问 setter getter.
decorators (introced in Python 2.4) – 装饰器.
现在装饰器语法糖遍布各Python框架.
slots – 用户设置后可以限定实例的属性.
在 Python2 中替代 __dict__, 可以节省近 2/3 内存, Python3 中可以
不因为优化内存使用率而使用 slots, 因为 __dict__ 结构内存做了优化,
Note: __dict__ 并不是 Python 意义上的内置的 dict, 其实是一个 proxy 类.
a new Method Resolution Order (MRO) – MRO 方法解析次序改变
(由左递归改为C3算法)
D. python在类中初始化另一个类
第一个问题:queryservice继承了service,第一个问题处的意思是同样把service里的init method原封不动继承过来。没有保存什么值。
第二个问题:你用init初始化时后面的括号里是self和request,而request你给的默认值是none,也就是说编译完了用的时候,我可以QueryService(request='xxxx') 也可以直接QueryService()。而self.request = request的意思是把用户输入的request,也就是'xxx'保存到内部。
解释的不太清楚,建议阅读一下各种python书面向对象编程这块,lz问的都是最基础的问题
E. Python 为什么要继承 object 类
历史遗留问题.2.2以前的时候type和object还不统一. 在2.2统一以后到3之间, 要用class
Foo(object)来申明新式类, 因为他的type是 < type 'type' > .不然的话, 生成的类的type就是
< type 'classobj' >
F. python中object基类到底有什么用
基类就是所有对象的跟,这样定义是有历史原因的。
继承了object的类是新式类,由于他们都是object的派生类,便于统一操作。py2由于一些类不继承object,就弄了一些内置函数,两种风格掺杂在一起很别扭。其实这点在动态语言里面看不出优势,在静态类型的语言比如java之中优势一目了然。