当前位置: 首页 > news >正文

网站建设会议议程湖州建设网站

网站建设会议议程,湖州建设网站,杭州网站建设(推荐乐云践新),中国的科技成就一、参考二、构造和初始化2.1 __new__在对象实例化过程中最先调用的方法是__new__, 该方法接收参数为类#xff0c;然后将其他参数#xff0c;传递给__init__, 该魔法函数比较少见#xff0c;可以使用其#xff0c;创建单例类; __new__方法是一个类方法#xff0c;需要携带…一、参考二、构造和初始化2.1 __new__在对象实例化过程中最先调用的方法是__new__, 该方法接收参数为类然后将其他参数传递给__init__, 该魔法函数比较少见可以使用其创建单例类; __new__方法是一个类方法需要携带的第一个参数是类class T1(object):_instances {}def __new__(class_, *args, **kwargs):if class_ not in class_._instances:class_._instances[class_] super(T1, class_).__new__(class_, *args, **kwargs)return class_._instances[class_]def __init__(self, *args, **kwargs):pass2.2 __init____init__是一个实例方法用于将构造的实例初始化在类定义中十分常见2.3 __del__类比于C, __new__和__init__可以当作类的构造函数__del__充当类的析构函数该函数在垃圾回收时候调用而不是在del object时候触发可以用于添加套接字或者文件的close()逻辑但是使用需要小心实际几乎不使用该方法from os.path import joinclass FileObject:Wrapper for file objects to make sure the file gets closed on deletion.def __init__(self, filepath~, filenamesample.txt):# open a file filename in filepath in read and write modeself.file open(join(filepath, filename), r)def __del__(self):self.file.close()del self.file三、重定义运算符四、获取类表示信息4.1 __str____str__(self)自定义对类调用str()方法时候的行为4.2 __repr____repr__(self)定义对类的实例调用repr()时候的行为str()和repr()的不同之处是目标受众的不同repr()的目的是生成主要是机器可读的输出许多情况下可能输出为python代码 而str()一般输出为人类可读的信息4.3 __unicode____unicode__(self)定义对类实例执行unicode()方法时候的行为其返回unicode字符串如果只定义了unicode()使用str()会报错所以需要同事定义两个函数4.4 __format____format__(self, formatstr)定义在新样式字符串格式中使用类实例时候的行为4.5 __hash____hash__(self)当调用hash()函数时候定义行为通常用于字典中的key的快速比较是否相同通常也需要实现__eq__ 遵循下面的规则a b 实际为 hash(a) hash(b)4.6 __nonzero____nonzero__(self)定义对类的实例调用bool()时候的行为返回值为True或者False取决于具体的类4.7 __dir____dir__(self)定义对类的实例调用dir()函数时候的行为返回值是用户的属性列表通常实现dir()函数是不必要的但是如果重新定义了__getattr__或者__getattribute__或者其他动态生成属性则其对于交互式使用类非常重要4.8 __sizeof____sizeof__(self)定义对类实例调用sys.getsizeof()函数时候的行为返回值为对象的大小(字节为单位)通常对于C扩展实现的Python类有作用五、控制属性访问如果与其他语言比较(例如: Java)Python中好像没有真正的封装例如没有办法通过公共函数getter和setter定义私有属性这是事实。Python通过下列的魔法函数实现属性的封装而不是使用显式的修饰符5.1 __getattr____getattr__(self, name)可以定义当用户试图访问一个不存在的属性时候的行为这对于捕获或者重定向常见的拼写错误、引发警告等非常有用只有当访问不存在的属性时候才会调用该方法因此它不是真正的封装解决方案5.2 __setattr____setattr__(self, name, value)与__getattr__不相同__setattr__是一种封装解决方案允许定义分配属性值的行为如果该属性值已经存在则会覆盖由此可以自定义属性值的赋值规则def __setattr__(self, name, value):self.name value# since every time an attribute is assigned, __setattr__() is called, this# is recursion.# so this really means self.__setattr__(name, value). Since the method# keeps calling itself, the recursion goes on forever causing a crash由上代码self.name value会调用__setattr__内置函数所以会导致循环无限递归正确的定义方式为def __setattr__(self, name, value):self.__dict__[name] value # assigning to the dict of names in the class# define custom behavior here5.3 __delattr____delattr__(self, name)与__setattr__相同但是作用是删除属性而不是设置属性为了防止无限递归还需要采取与__setattr__相同的预防措施(在__delattr__的实现中调用del self.name将导致无限递归)5.4 __getattribute____getattribute__(self, name)不建议使用该函数因为极少情况下可以不产生bug正确使用。每次获取属性时候都会调用该函数5.5 总结Python的魔法方法非常重要且强大如果任意使用可能会带来破坏因此在已经充分了解了自定义属性访问之前不要随意使用该魔法方法事实上魔法方法往往过于强大和反直觉它存在的原因是通过它可以自由的做任何想做的事情但是如果不充分熟悉使用将会非常困难。class AccessCounter(object):A class that contains a value and implements an access counter.The counter increments each time the value is changed.def __init__(self, val):super(AccessCounter, self).__setattr__(counter, 0)super(AccessCounter, self).__setattr__(value, val)def __setattr__(self, name, value):if name value:super(AccessCounter, self).__setattr__(counter, self.counter 1)# Make this unconditional.# If you want to prevent other attributes to be set, raise AttributeError(name)super(AccessCounter, self).__setattr__(name, value)def __delattr__(self, name):if name value:super(AccessCounter, self).__setattr__(counter, self.counter 1)super(AccessCounter, self).__delattr__(name)六、自定义序列七、反射八、可调用对象在python中函数是第一类对象这意味着它们可以被传递给函数和方法好像其他第一类对象一样(数值、字符串等)而这是一个非常强大的功能。通过魔法函数__call__可以使得实例也表现的像函数一样以便可以调用实例可以将实例作为参数在函数调用中传递。8.1 __call____call__(self, [args...])允许将实例进行函数调用如下实际作用为e(5,6)实际为调用e.__call__(5,6)在经常需要修改实例的状态的场景下使用__call__调用实例修改实例状态是一种十分直观且优雅的方式class Entity(object):Class to represent an entity. Callable to update the entitys position.def __init__(self, size, x, y):self.x, self.y x, yself.size sizedef __call__(self, x, y):Change the position of the entity.self.x, self.y x, yif __name__ __main__:e Entity(size10, x1, y2)print(e)e(5, 6)print(e)九、上下文管理十、抽象基类十一、描述符对象十二、复制十三、序列化对象十四、结论
http://www.yutouwan.com/news/137237/

相关文章:

  • 搜索网站建设推广优化织梦网站模板源码
  • 网站建设用源码js做网站预览效果
  • 马尾区建设局网站怎么做平台网站
  • 如何做网站标头辽宁数据网站建设哪家便宜
  • 网站运营 广告jsp开发的网站
  • 找人做一个网站需要多少钱wordpress图片打叉
  • 昆山网站做电影网站危险吗
  • 做公司简介网站网站制作软件图标
  • 音乐做音基题网站企业服务网站建设方案
  • 网站建设公司相关资质石家庄 最新
  • 建个简单网站山东新增5个高风险地区
  • 包头网站作风建设年自评材料必应网站建设
  • 如何建设论坛网站福州网站建设的公司
  • 做期货看啥子网站人工智能绘画
  • 免费建站cmspython新手代码
  • 定制 网站潍坊网站制作厂家
  • 软件系统网站建设产品网站建站
  • 重庆奉节网站建设公司哪家好优普南通网站建设
  • 沈阳设计网站网站开发简介
  • 最便宜的外贸网站建设注册安全工程师考试题库及答案
  • 百度新站关键词排名网站建设吕凡科技
  • 济南智能网站建设咨询电话松原做网站平台
  • 苏州企业网站建站品牌形象网站建设
  • 北京联通网站备案软件开发专业专科
  • 网站建设与管理教学视频下载广东seo网站设计多少钱
  • 淘宝客做的好的几个网站拓者设计官网网页版
  • 网站怎么做下拉刷新页面数据网站整站下载带数据库后台的方法
  • 苏州官方网站建站白嫖永久服务器
  • 网站开发 云智互联网站备案费用
  • 重庆网站建设就找承越网站建设培训速成