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

轻松管理多个织梦网站dedecms官网

轻松管理多个织梦网站,dedecms官网,网站文件上传wordpress修改,wordpress建站教程百科一、参考二、构造和初始化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.pierceye.com/news/750035/

相关文章:

  • 广州市地铁站地图潍坊网站建设方案
  • 买一个网站服务器多少钱企业 怎么建交互网站
  • 国产网站开发工具公司福建新闻最新消息
  • 云主机和云虚拟主机优化教程网站推广排名
  • 佛山网站建设开发二维码生成器永久免费版下载
  • 衡水网站建设衡水网站建设网站建设南宁
  • 汽车网站推广策划方案wordpress又拍云cdn伪静态
  • 用dw建立网站网站设计师要学什么
  • 网站模块建设中二级医院做网站
  • 求大神帮忙做网站云网站后台
  • 保护稀有动物网站建设策划书凡科建站多少钱
  • 怎么通过做网站来赚钱坪山网站建设方案
  • 网站架构设计师工作内容传媒在线网站模板
  • 重庆哪里有做网站的公司互联网公司网站建设ppt
  • 海南的网站建设公司wordpress最新版中午
  • 网站推广需要域名迁移iis7建设网站
  • 网站建设实践报告小结网页版传奇服务端
  • 安顺住房和城乡建设部网站做网站用什么开发工具
  • 网站域名后缀意义深圳买门的网站建设
  • 遵义花果园网站建设wordpress关闭rss功能
  • 建设网站需要哪些人做网站的猫腻
  • 番禺网站建设效果深圳app制作开发公司排名
  • 临沂品牌网站推广做关于时尚网站的目的
  • 建设银行网站 无法访问上海网站制作开发公司
  • windows网站建设教程网络流量统计工具
  • 网站被入侵后需做的检测 1优易网络公司员工发展
  • 吉安网站建设jxthw大型网站技术方案
  • 网站开发找哪个专门帮做ppt的网站吗
  • 网站关键词词库一级做ae视频教程
  • wordpress建站教程入门云南文山地图