python: class VS instance

在CPP中我们认为class是一个对象的定义,instance就是这个对象的具体实例,所以class没有任何现实的意义不能提供直接的操作。但是在python里面就是完全不一样的世界,python秉承了部分java的every is object的设计理念,那对class本身当然也不能放过,所以这里的class也同样是一个实例,只不过只此一份,不能随便派生,自然我们联想到了CPP中的singlton, 在很大程度来讲两者的作用是相同的,但是从设计理念上来讲两者又是完全不同的,当然在python中也有很好的sington的实现。

强调一下python的class和instance是完全不同的系统,从变量的定义到函数的调用,都不相同,从变量的定义来讲,定义在class内的是class的member,在__init__内的是instance本身的,从函数上来讲,如果有@classmethod的是class的函数,没有的就是一般instance的。并且两种函数的第一个参数也不一样,一个是self另外一个是cls,或许这个也解释了为什么python一定要在menber function前加一个self,因为还有一个cls需要区分。

时间: 2024-10-16 02:41:20

python: class VS instance的相关文章

Python Simple Unicode Instance

#!/usr/bin/env python #--*-- coding:utf-8 --*-- ''' An example of reading and writing Unicode string :Writes a Unicode string to a file in utf-8 and reads it back in. ''' CODEC = 'utf-8' FILE = 'unicode.txt' hello_out = u"Hello world\n" bytes_ou

python class metaclass instance

>>> class CObj(object):... pass...>>> dir()['CObj', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']>>> cob = CObj>>> dir()['CObj', '__builtins__', '__doc__', '__loader__', '__name__', '__

Python里面所有instance应该现在__init__里面预定义

原因: Yes, you should assign all attributes of your object in the __init__ method. The most important reason to do this is tool support. Many Python IDEs can see the assignments in the __init__ and use those attributes for type-based autocompletion. Sp

《Python 源码剖析》一些理解以及勘误笔记(2)

以下是本人阅读此书时理解的一些笔记,包含一些影响文义的笔误修正,当然不一定正确,贴出来一起讨论. 注:此书剖析的源码是2.5版本,在python.org 可以找到源码.纸质书阅读,pdf 贴图. 文章篇幅太长,故切分成3部分,这是第二部分. p248: 嵌套函数.闭包和 decorator co_cellvars: 通常是一个tuple,保存嵌套的作用域内使用的变量名集合: co_freevars: 通常是一个tuple,保存使用了的外层作用域中的变量名集合. 如下的一段Python 代码: P

Python Twisted 学习系列6(转载stulife最棒的Twisted入门教程)

第六部分:抽象地利用Twisted 作者:[email protected]http://krondo.com/?p=1595译者:杨晓伟(采用意译) 第六部分:抽象地利用Twisted 你可以从这里从头开始阅读这个系列. 打造可以复用的诗歌下载客户端 我们在实现客户端上已经花了大量的工作.最新版本的(2.0)客户端使用了Transports,Protocols和Protocol Factories,即整个Twisted的网络框架.但仍有大的改进空间.2.0版本的客户端只能在命令行里下载诗歌.这

Python flask中的配置

当你开始学习Flask时,配置看上去是小菜一碟.你仅仅需要在config.py定义几个变量,然后万事大吉. 然而当你不得不管理一个生产上的应用的配置时,这一切将变得棘手万分. 你不得不设法保护API密钥,或者纠结于为了不同的环境(比如开发环境和生产环境)使用不同的配置. 在本章我们将探讨Flask的一些高级特性,它们能让配置管理更为轻松. 从小处起步 一个简单的应用不需要任何复杂的配置.你仅仅需要在你的根目录下放置一个config.py文件,并在app.py或yourapp/__init__.p

python学习之 类class

定义 Python 的 Class 比较特别,和我们习惯的静态语言类型定义有很大区别. 1. 使用一个名为 __init__ 的方法来完成初始化.2. 使用一个名为 __del__ 的方法来完成类似析购操作.3. 所有的实例方法都拥有一个 self 参数来传递当前实例,类似于 this.4. 可以使用 __class__ 来访问类型成员 >>>>>> class MyClass: def __init__(self): print "initialize.&q

《Python 源码剖析》一些理解以及勘误笔记(3)

以下是本人阅读此书时理解的一些笔记,包含一些影响文义的笔误修正,当然不一定正确,贴出来一起讨论. 注:此书剖析的源码是2.5版本,在python.org 可以找到源码.纸质书阅读,pdf 贴图. 文章篇幅太长,故切分成3部分,这是第三部分. p316: 初始化线程环境 Python 虚拟机运行期间某个时刻整个的运行环境如下图: 建立联系之后的PyThreadState 对象和 PyInterpreterState  对象的关系如下图: _PyThreadState_Current 是个全局变量,

Python基础:Python类(真累~)

类的声明: 一.类的属性 (私有属性和公有属性) (类属性) 二.类的方法 (构造方法.析构方法.自定义方法.特殊成员方法) (静态方法.类方法.类属性) 三.类的继承 (方法和属性的继承,方法的重构) (抽象类,多重继承) 四.类的多态 (实现接口的重用) 五.类的特殊装饰 (@staticmethod.@classmethod.@property) 六.类的来源和原类(metaclass) 七.反射 类的声明 使用class声明类,建议类名单词首字母大写. "新式类"和"