博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内置方法 常用模块
阅读量:5168 次
发布时间:2019-06-13

本文共 2050 字,大约阅读时间需要 6 分钟。

__new__

在init 之前 , 实例化对象的第一步是__new__创建一个空间

class Foo:    def __init__(self):                 # 初始化方法        print('执行了init')    def __new__(cls, *args, **kwargs):  # 构造方法        # object.__new__(cls)        print('执行了new')        return object.__new__(cls)     #如果这个return不写,init方法永远不会执行obj = Foo()

执行了new    先执行new

执行了init

 

创造一个对象  比喻成  捏小人

new 是小人捏出来

init 是小人穿衣服

 

设计模式  常用的23种

源头是从java里来得  因为Java 开发一个项目 很庞大,个方面人员需要配合,就相应出了一些标准,这样比较好对接。

python  :

  推崇设计模式 :会java 也会python  从java转的python

  贬低设计模式:纯python开发  因为python 一两个人就可以开发一个项目

单例模式:   一个类 只有一个实例  

class Foo:    __instance = None    def __init__(self,name,age):                 # 初始化方法        self.name = name        self.age = age        self.lst = [name]         #self.lst = [age]  那就只打印年龄  上面的name 被覆盖         # self。lst = [name,age] 打印名字和年龄 def __new__(cls, *args, **kwargs):  # 构造方法        if cls.__instance is None:            cls.__instance = object.__new__(cls)        return cls.__instanceobj1 = Foo('alex',20)obj2 = Foo('egon',22)print(obj1.lst,obj2.lst)      最后结果 print   ['egon'] ['egon']

__del__

class Foo:    def __init__(self,name,age):        self.name = name        self.age = age        self.file = open('file',mode = 'w')    def write(self):        self.file.write('sjahgkldhgl')    def __del__(self):    # 析构方法 : 在删除这个类创建的对象的时候会先触发这个方法,再删除对象        # 做一些清理工作,比如说关闭文件,关闭网络的链接,数据库的链接        self.file.close()        print('执行del了')f = Foo('alex',20)                   # 只要写了这个__del__ 这个方法,他必定执行,所以可以写一个关闭文件放着,以防别人忘记关或者自己,写这个方法上个保险print(f)                              这个方法就是垫底的 别的程序走完 然后走他 最后一道保险

__len__

 和len( )这个内置函数  其实差不多  int 和float  不适用  这个__len__同样不适用

# len()  lst dict set str# print('__len__' in dir(list))# print('__len__' in dir(dict))# print('__len__' in dir(set))# print('__len__' in dir(tuple))# print('__len__' in dir(str))## print('__len__' in dir(int))# print('__len__' in dir(float))    #后面两个都是返回 False

__eq__

可以自定义   两个值是否相等

__hash__

class Foo():    passobj1 = Foo()obj2 = Foo()
print(hash(obj1)) print(hash(obj1))

两个对象的内存地址都不一样

 

转载于:https://www.cnblogs.com/single82/p/9581807.html

你可能感兴趣的文章
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>
postgresql学习文档
查看>>
Struts2返回JSON数据的具体应用范例
查看>>