Python3的__new__进行构造类的实例化
__new__方法
- 这个方法是用来生成类的实例
class Singleton(object):
def __new__(cls,*args, **kwargs): ①
if not hasattr(cls,'_inst'):
print(cls)
cls._inst = super(Singleton, cls).__new__(cls) ②
return cls._inst ②
① 第一个参数必须是"要进行实例化的类".
② 返回实例完成的结果,如果实例化失败那么实例的初始化函数"init"肯定不会执行
Python2(2.7)的写法
class Singleton(object):
def __new__(cls,*args, **kwargs): ①
if not hasattr(cls,'_inst'):
print(cls)
cls._inst = super(Singleton, cls).__new__(cls,*args,**kwargs) ②
return cls._inst ②
Python3(3.5)的写法
class Singleton(object):
def __new__(cls,*args, **kwargs): ①
if not hasattr(cls,'_inst'):
print(cls)
cls._inst = super(Singleton, cls).__new__(cls) ②
return cls._inst ②
如果Python3的写法跟Python2写法一样,那么倒数第二行会报错"TypeError: object() takes no parameters"
Python3的__new__进行构造类的实例化的更多相关文章
- __new__()方法的使用和实例化
Python中__new__()方法的使用和实例化 1 2 new()是在新式类中新出现的方法,它作用在构造方法init()建造实例之前,可以这么理解,在Python 中存在于类里面的构造方法init ...
- Python中__new__()方法的使用和实例化
new()是在新式类中新出现的方法,它作用在构造方法init()建造实例之前,可以这么理解,在Python 中存在于类里面的构造方法init()负责将类的实例化,而在init()调用之前,new()决 ...
- 创建Car类,实例化并调用Car类计算运输的原料量是否足够
package dx; public class Car { //构造类 public Car() { System.out.println("Car的构造类"); } //构造类 ...
- python3全栈开发- 元类metaclass(面试必考题)
一.知识储备 #exec:三个参数 #参数一:字符串形式的命令 #参数二:全局作用域(字典形式),如果不指定,默认为globals() #参数三:局部作用域(字典形式),如果不指定,默认为locals ...
- Day 5-8 自定义元类控制类的实例化行为
__call__方法: 对象后面加括号,触发执行. 注:构造方法的执行是由创建对象触发的,即:对象 = 类名() :而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类( ...
- Python3.x:定义一个类并且调用
Python3.x:定义一个类并且调用 1,定一个类Shrjj(其中有属性:name, jjzt,fbsjj,etf,lof,fjlof): class Shrjj(object): def __in ...
- Java类的定义与类的实例化
目录 Java类的定义与类的实例化 类的定义 定义一个简单的类 定义一个成员变量 定义一个方法 定义一个构造器 类的实例化 创建对象及使用对象: 创建对象的过程在内存中的表现 Java类的定义与类的实 ...
- 关于Java构造类与对象的思考
简单记录一下Java构造类与对象时的流程以及this和super对于特殊例子的分析. 首先,接着昨天的问题,我做出了几个变形: Pic1.原版: Pic2.去掉了T.foo方法中的this关键字: P ...
- JVM初探(五):类的实例化
一.概述 我们知道,一个对象在可以被使用之前必须要被正确地实例化.而实例化实际指的就是以一个java类为模板创建对象/实例的过程.比如说常见的 Person = new Person()代码就是一个将 ...
随机推荐
- Algorithm——Add Two Numbers(补上周)
一.question You are given two non-empty linked lists representing two non-negative integers. The digi ...
- 【代码笔记】iOS-DropDownDemo-下拉按钮效果
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- drupal smtp could not connect to smtp
情况说明: 使用了SMTP Authentication Support 模块. 配置都没问题,是从另一台服务器迁过来的网站和数据库. 原因是客户的smtp服务器限制了我们新服务器的IP. 验证方式t ...
- iview里select组件搜索后选中的数据和展示内容不一样
原因:option上的key设置的不唯一 保证key的值唯一
- CRM系统新思维
客户关系管理系统(CRM系统)是管理公司当前以及未来潜在客户的系统,其主要目的是通过优化客户关系实现公司销售业绩的长期增长,它是企业信息系统的核心之一.目前,移动互联网.大数据以及人工智能技术发展日新 ...
- Android获取SD卡路径及SDCard内存的方法
这篇文章主要介绍了Android获取SD卡路径及SDCard内存的方法,较为详细的分析了Android针对SD卡操作所涉及的类及其具体函数功能,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了A ...
- RESULT_OK,RESULT_CANCELED,RESULT_FIRST_USER
RESULT_OK是执行结果,有RESULT_OK,RESULT_CANCELED,RESULT_FIRST_USER 在调用系统app时返回时RESULT_CANCELED如字面意思代表取消,RES ...
- html单元格导出excel图形环境问题
现象:报表页面端展现正常,点击导出excel,选择完是否分页后页面没有反应,后台润乾日志中错误信息: runqianReportLogger : [ERROR] - Error: at com ...
- String 类型
一.不可变 一个 String 类型的值是不可以改变的,比如,String china = "中国",“中国”这个字符串从它创建开始直到销毁都是不可改变的. 二.字符串常量池 字面 ...
- Android8.0适配那点事(一)
最近有小伙伴说,7.0适配整了一波,现在又要来适配8.0,真是一波未平一波又起 但是作为开发者来说,学无止境,不跟上时代的步伐,肯定会被时代所淘汰... 话说Android P已经在路上了,你准备好了 ...