python的__init__几种方法总结
__init__()
这个方法一般用于初始化一个类
但是 当实例化一个类的时候, __init__并不是第一个被调用的, 第一个被调用的是__new__
#!/usr/bin/env python
# coding:utf-8
class Test(object):
"""
用于初始化类
"""
def __init__(self, a, b):
self.a = a
self.b = b
def res(self):
return (self.a, self.b)
t = Test(100, 200)
print t.res()
"""
(100, 200)
"""
__str__()
这是一个内置方法, 只能返回字符串, 并且只能有一个参数self
#!/usr/bin/env python
# coding:utf-8
class Test(object):
"""
用于初始化类
"""
def __init__(self, a, b):
self.a = a
self.b = b
def res(self):
return (self.a, self.b)
def __str__(self):
return '这是一个类'
t = Test(100, 200)
print t.__doc__
print '-----'
print t
"""
用于初始化类
-----
这是一个类
"""
__new__()
__new__方法是创建类实例的方法, 创建对象时调用, 返回当前对象的一个实例__init__方法是类实例创建之后调用, 对当前对象的实例的一些初始化, 没有返回值
先看旧式类的例子
class Test:
def __init__(self, age=20):
print '__init__在运行'
self.age = 20
def __new__(cls):
print '__new__在运行'
return super(Test, cls).__new__(cls)
t = Test()
"""
__init__在运行
"""
旧式类没有__new__()方法
新式类的__new__
#!/usr/bin/env python
# coding:utf-8
class Test(object):
def __init__(self, age):
print '__init__在运行'
self.age = age
def __new__(cls, age):
print '__new__在运行'
return super(Test, cls).__new__(cls, age)
t = Test(20)
"""
__new__在运行
__init__在运行
"""
上例可以看出__new__是在__init__之前执行的
上例的执行逻辑:
- 先执行t = Test(20)
- 首先执行age参数来执行Test类的
__new__()方法, 这个__new__方法会返回Test类的一个实例(通常使用)
__call__()
对象通过提供一个__call__(self, *args, *kwargs)方法可以模拟函数的行为, 如果一个对象提供了该方法, 可以向函数一样去调用它
# -*- coding: utf-8 -*-
class Test(object):
def __init__(self):
print 100
def __new__(cls):
print 200
return super(Test, cls).__new__(cls)
def __call__(self, x):
print 300
t = Test()
t(100)
"""
200
100
300
"""
python的__init__几种方法总结的更多相关文章
- Python 爬虫入门3种方法
Python 2.0 url = "http://www.baidu.com" print '第一种方法' response1 = urllib2.urlopen(url) pri ...
- python列表的11种方法
python列表的11种方法2017年11月24日 03:26:43 Milton-Long 阅读数:254版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.n ...
- python—字符串拼接三种方法
python—字符串拼接三种方法 1.使用加号(+)号进行拼接 字符串拼接直接进行相加就可以,比较容易理解,但是一定要记得,变量直接相加,不是变量就要用引号引起来,不然会出错,另外数字是要转换为字 ...
- 太酷炫了!!我会Python 导包八种方法,你呢?
1. 直接 import 人尽皆知的方法,直接导入即可 >>> import os >>> os.getcwd() '/home/wangbm'复制代码 与此类似的 ...
- Python文件遍历二种方法
分享下有关Python文件遍历的两种方法,使用的OS模块的os.walk和os.listdir实现. 关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os ...
- 调试python 程序的几种方法总结
程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误 ...
- 优化Python代码的4种方法
介绍 作为数据科学家,编写优化的Python代码非常非常重要.杂乱,效率低下的代码即浪费你的时间甚至浪费你项目的钱.经验丰富的数据科学家和专业人员都知道,当我们与客户合作时,杂乱的代码是不可接受的. ...
- 求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法
今天面试,遇到面试官询求最大公约数.小学就学过的奥数题,居然忘了!只好回答分解质因数再求解! 回来果断复习下,常用方法辗转相除法和更相减损法,小学奥数都学过,很简单,就不细说了,忘了的话可以百度:ht ...
- Python单例模式的四种方法
在这之前,先了解super()和__new__()方法 super()方法: 返回一个父类或兄弟类类型的代理对象,让你能够调用一些从继承过来的方法. 它有两个典型作用: a. 在单继承的类层次结构中, ...
随机推荐
- ecshop广告分析
ecshop模板中,显示广告的库项目是ad_position.lbi,其内容只有一个语句: {insert name='ads' id=$ads_id num=$ads_num} smarty的ins ...
- 如何自定义容器网络?- 每天5分钟玩转 Docker 容器技术(33)
除了 none, host, bridge 这三个自动创建的网络,用户也可以根据业务需要创建 user-defined 网络. Docker 提供三种 user-defined 网络驱动:bridge ...
- Flash TextField selectable bug block TextEvent.Link solution
There is an old version Felx SDK bug(in my case it's Flex SDK v3.3.0.4852) that when TextField.selec ...
- PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/event.so'
这是因为启动apche 的时候重复加载了php的动态库模块了, 将:/etc/php.d/ 目录下的event.ini中的内容注释掉或者将文件删除即可
- mysql安装不上 failed to install the service
先前安装的没有卸载干净必须删除相应的注册表方法如下:1)“运行”中敲入“Regedit”进入注册表编辑2)HKEY_LOCAL_MACHINE->SYSTEM->ControlSet001 ...
- C++ 获取文件夹下的所有文件名
获取文件夹下所有的文件名是常用的功能,今天再一次有这样的需求,所有就在网上查找了很多,并记下以供后用. 原文:http://blog.csdn.NET/cxf7394373/article/detai ...
- H5学习第三周
今天主要总结弹性布局 flex使用 1.给父容器添加display flex/inline-flex;属性 2.父容器可以使用的属性值有 >>>flex-direction 属性决定 ...
- 用CSS3实现无限循环的无缝滚动
有时候在页面的某个模块中,需要无限循环的滚动一些消息.那么如果我们用js实现无缝衔接滚动的思路是什么呢(比如我们这个模块是向上滚动的)? 克隆A一份完全一样的数据B放在原数据A的后面: 使用setIn ...
- Java - 在WebService中使用Client调用三方的RestAPI
背景 近期,由于项目的要求需要在自己的webservice中调用远程的WebAPI(Restful format).自己的webservice程序是用Java编码写的,所以需要在其中实现一个Clien ...
- java操作DBF的使用
1.引入javadbf.4.1.jar 2. import com.linuxense.javadbf.DBFField; import com.linuxense.javadbf.DBFRead ...