python补充4
一 如何判断一个对象是不是函数类型
#方法一
def func(arg):
if callable(arg):
print("是函数"+arg())
else:
print(arg) func() #
func(lambda : "") #是函数666
方法二
import types
def func(arg):
if isinstance(arg,types.FunctionType):
print("是函数"+arg())
else:
print(arg) func()
func(lambda : "")
二 关于__new__方法和 __init__方法
我们知道对一个类加上括号就是实例化一个对象,那么,new和init方法有什么先后吗
1 先看一个简单的例子
class Foo(object):
def __init__(self,a1):
print(a1) #
self.a=a1
obj=Foo() #123
print(obj) #<__main__.Foo object at 0x00000184FFEC8908>
结果:
123
<__main__.Foo object at 0x00000184FFEC8908>
分析:一个类的实例化首先找到__new__方法,在这里我们没有写,因此它会去找它的父类的__new__方法,它返回的是对象,之后对对象进行构造
2 对 __new__方法进行重写
class Foo(object):
def __init__(self,a1):
print(a1) #
self.a=a1
def __new__(cls,*args,**kwargs):
# return 'hhhh'
pass
结果:None
分析:先执行new方法,这里为空,就返回为None,为其他字符时,返回其他字符,init的方法没有执行
3 重写返回对象
class Foo(object):
def __init__(self,a1):
print(a1) #123 ----
self.a=a1
def __new__(cls, *args, **kwargs):
#根据类创建对象
#执行返回值的构造方法 __init__
print(cls) #<class '__main__.Foo'> --这里先执行,还是类
return object.__new__(cls)
obj=Foo(123)
print(obj) #<__main__.Foo object at 0x0000020899B48908>
结果:
<class '__main__.Foo'>
123
<__main__.Foo object at 0x0000020899B48908>
python补充4的更多相关文章
- Python补充02 Python小技巧
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在这里列举一些我使用Python时积累的小技巧.这些技巧是我在使用Python过程 ...
- Python补充06 Python之道
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录 ...
- python补充最常见的内置函数
最常见的内置函数是: print("Hello World!") 数学运算 abs(-5) # 取绝对值,也就是5 round(2. ...
- Python补充05 字符串格式化 (%操作符)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在许多编程语言中都包含有格式化字符串的功能,比如C和Fortran语言中的格式化输 ...
- Python补充03 Python内置函数清单
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明. Python内置(built-in)函数随着python解释器的运行而创建.在Pytho ...
- Python补充04 Python简史
原文:Python简史 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python是我喜欢的语言,简洁,优美,容易使用.前两天, ...
- 【Python 补充01】Python运算符
Python运算符 举个简单的例子 4 +5 = 9 . 例子中,4 和 5 被称为操作数,"+" 称为运算符. 1.算术运算符 + - * / # 加减乘除 % # 取模(返回除 ...
- python补充3
一单例模式 类:具体相同特征的一类事物,类似于模板 单例:常用的软件设计模式,用于设计一个类中只有一个实例且易于外界访问,可以对实例的个数控制并节约系统资源 运用场景:比如某个服务器程序的配置信息,它 ...
- python补充知识点
1. 在python2中用xrange,在python3中直接使用range就好了 2. 常数 None在逻辑判断的时候指代False,其他方式不代表True或者False 3. for循环只作用域容 ...
- python 补充:join() , 基本数据类型的增删改查以及深浅拷贝
# join() join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. li = ["李李嘉诚", "麻花藤", "黄海海峰&q ...
随机推荐
- WaitForSingleObject的作用[转]
在多线程的情况下,有时候我们会希望等待某一线程完成了再继续做其他事情(比如主线程等待子线程结束完之后,自己再结束),要实现这个目的,可以使用Windows API函数WaitForSingleObje ...
- egg 连接mysql 在mysql 插入数据
1.配置mysql exports.mysql = { enable: true, package: 'egg-mysql' }; 'use strict'; module.exports = app ...
- swagger2 官网配置
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2& ...
- Python--面向对象的程序设计之继承与派生
继承与派生 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 cla ...
- mpu6050学习
一.MPU6050初始化 /**************************实现函数******************************************** *函数原型: ...
- hdu 3060 Area2 (计算几何模板)
Problem Description 小白最近又被空军特招为飞行员,参与一项实战演习.演习的内容还是轰炸某个岛屿(这次的岛屿很大,很大很大很大,大到炸弹怎么扔都能完全在岛屿上引爆),看来小白确实是飞 ...
- LA 3971 Assemble(二分)
题目: 给你b元钱,让你组装一台电脑,有n个配件,属性有 种类 名字 价格 品质,每种类型选至少一个,并且最小品质最大.输出这个最大的最小品质. 白书上说了,最小值最大的问题一般是二分来求解答案.在这 ...
- Python每日一题 006
题目 你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小. 如果只是单纯的通过将图片缩放到iPhone5分辨率大小,显然最后呈现出来的效果会很糟糕.所以等比例缩放到长( ...
- taomcat中catalina.out文件
项目中发现在linux环境下布署的tomcat所占用的磁盘空间越来越大,是catalina.out 文件,每天几乎是2个G,发现可能会影响到tomcat服务(没确定)正常访问.文件这么大,其实已经无法 ...
- 2019 TCO Round 1B——[ 状压DP ]
第一题是 EllysSki . 题意:给n个数,求两个方向的最长递减区间. 可以O(n). #include<cstdio> #include<cstring> #includ ...