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

广州手机网站定制如何门户媒体有哪些

广州手机网站定制如何,门户媒体有哪些,浦城 网站 做,企业信用信息公示系统年报怎么填什么是魔术方法 所谓魔法方法#xff0c;它的官方的名字实际上叫special method#xff0c;是Python的一种高级语法#xff0c;允许你在类中自定义函数#xff0c;并绑定到类的特殊方法中。比如在类A中自定义__str__()函数#xff0c;则在调用str(A())时#xff0c;会自动…什么是魔术方法 所谓魔法方法它的官方的名字实际上叫special method是Python的一种高级语法允许你在类中自定义函数并绑定到类的特殊方法中。比如在类A中自定义__str__()函数则在调用str(A())时会自动调用__str__()函数并返回相应的结果。 docs.python.org/3/reference… 我们常常看到的Magic Methods这个名字在官方的文档里是没有出现过的。 当然无论是magic methods还是魔术方法这些词都被广泛的使用着。 所谓的魔术方法是python提供的让用户客制化一个类的方式它顾名思义就是定义在类里面的一些特殊的方法。 这些special method的特点就是它的method的名字前后都有两个下划线所以这些方法也被称为dunder methods。那包括这种前后两个下划线的形式也叫做dunder score它的意思就是double underscore。 在我们平时写程序的时候已经或多或少的接触过不少的魔术方法。 比如__init__就非常非常的常用。 基础的魔术方法 __new__和__init__ 首先我们来聊一下__new__和__init__。 这两个方法可以让你改变从一个类建立一个对象时候的行为这两个也比较容易被搞混。 如果你不那么了解这两个方法的机制本身你只需要记住__new__是从一个class建立一个object的过程。 而__init__是有了这个object之后给这个object初始化的过程。 class A:def __new__(cls, *args, **kwargs):print(__new__)return super().__new__(cls, *args, **kwargs)def __init__(self):print(__init__)if __name__ __main__:a A() 输出结果为 __new__ __init__ 我们可以看到__new__和__init__都被使用了。我们可以粗略的想象成 obj __new__(A) __init__(obj) 如果我们在建立object的时候传入了参数则参数既会传给__new__也会传给__init__。 在我们实际的应用中__new__函数用到的是相对较少的。如果你不需要客制化建立这个object的过程你只需要初始化这个object你只需要用到__init__。 那什么时候用__new__呢 比如说我要创建一个单例或者一些和metaclass有关的才会用到__new__函数。 单例模式是指在整个应用程序中某个类只能有一个实例存在且该实例可以被任何模块访问到。这种模式的应用场景包括数据库连接池、日志对象等需要全局唯一性的对象。 简单单例 以下是一个简单的单例模式的示例代码 class Singleton:_instance Nonedef __new__(cls):if not cls._instance:cls._instance super().__new__(cls)return cls._instance 在这个例子中我们定义了一个名为 Singleton 的类。它包含一个类变量 _instance该变量用于存储唯一实例的引用。 在 __new__ 方法中我们检查 _instance 是否为 None。如果是则创建一个新的实例并将其分配给 _instance。如果不是则直接返回 _instance而不创建新的实例。 通过这种方式我们可以确保在应用程序中只有一个 Singleton 实例。要使用它只需创建一个 Singleton 对象即可 s1 Singleton() s2 Singleton()print(s1 is s2) # 输出 True 以上代码输出结果为 True说明 s1 和 s2 引用的是同一个实例即单例模式实现成功。 __new__和元类metaclass 在 Python 中__new__() 和元类(metaclass)之间有着紧密的联系它们都是用来控制类的创建过程的。 元类是 Python 中的一个高级特性它允许我们在创建类的过程中动态地修改类。元类可以通过定义 __new__() 方法来控制类的实例化过程。 在 Python 中当我们通过 class 关键字定义一个新的类时Python 解释器会自动调用元类来实例化类对象。元类在实例化类对象之前先调用类的 __new__() 方法来创建类的实例然后再调用 __init__() 方法来初始化实例。 在 Python 中使用 __call__() 方法可以实现将类的实例对象作为函数调用的效果类似于调用一个函数。当我们调用一个类的实例对象时Python 会自动调用这个实例对象的 __call__() 方法从而实现了将类的实例对象作为函数调用的效果。 通过在类的 __call__() 方法中间接调用类的 __new__() 方法和 __init__() 方法可以实现单例模式。具体而言每次调用类的实例对象时都会先检查已经创建的实例对象是否存在如果存在则直接返回该实例对象如果不存在则通过调用 __new__() 方法和 __init__() 方法来创建一个新的实例对象并将其存储下来。由于每次都返回同一个实例对象因此实现了单例模式。 以下是一个使用元类和 __call__() 方法实现单例模式的示例代码 class SingletonType(type):_instances {}def __call__(cls, *args, **kwargs):if cls not in cls._instances:cls._instances[cls] super().__call__(*args, **kwargs)return cls._instances[cls]class MyClass(metaclassSingletonType):pass 在上述代码中我们首先定义了一个元类 SingletonType这个元类重写了 __call__() 方法用于控制类的实例化过程。在 __call__() 方法中我们首先检查 _instances 字典中是否已经有该类的实例对象如果已经存在则直接返回该实例对象如果不存在则通过调用父类的 __call__() 方法创建一个新的实例对象并将其存储到 _instances 字典中然后返回该实例对象。 接下来我们定义了一个类 SingletonClass并将其元类设置为 SingletonType。由于 SingletonType 的 __call__() 方法控制着 SingletonClass 的实例化过程因此每次创建 SingletonClass 的实例对象时都会经过 SingletonType 的 __call__() 方法来进行处理从而实现了单例模式。 下面是一个示例演示了如何使用 SingletonClass 类来创建实例 a SingletonClass() b SingletonClass()print(a is b) # True 由于 SingletonClass 类是一个单例类因此 a 和 b 都是同一个实例对象所以 a is b 的结果为 True。 所以必要时我们可以通过元类和__new__方法来控制类的创建过程。 __new__是创建object因此它是有返回值的必须返回这个object。 而__init__没有返回值, __init__函数里面的self就是你要初始化的对象。 __del__ __del__()是delete的缩写这是析构魔术方法。当一块空间没有了任何引用时 默认执行__del__回收这个类地址一般我们不自定义__del__ 有可能会导致问题 触发时机当对象被内存回收的时候自动触发有下面两种情况 页面执行完毕回收所有变量当多个对象指向同一地址所有对象被del的时候 功能对象使用完毕后资源回收 参数一个self接受对象 返回值无 注意程序自动调用__del__()方法不需要我们手动调用。 python中对象的释放是比较复杂的。 __del__和关键字del是没有关系的我们看到del o没有触发__del__。 __del__()和del关键字是两个不同的概念虽然它们都与对象的销毁相关。 del是Python的一个关键字用于删除变量或对象的引用。当我们执行del obj语句时Python会将对象obj的引用计数减1如果引用计数为0则对象被销毁。del关键字并不会直接调用对象的__del__()方法它只是将对象的引用计数减1由Python自动决定是否调用__del__()方法。 __del__()方法是一个特殊方法用于在对象被销毁时执行一些清理任务。当对象的引用计数为0时Python会自动调用该对象的__del__()方法进行清理。__del__()方法在对象被销毁前最后一次被调用我们可以在这个方法中执行一些需要进行清理的操作如释放资源、关闭文件等。 需要注意的是__del__()方法不是必须的大多数情况下Python会自动处理对象的销毁和内存管理我们不需要手动定义__del__()方法。如果我们确实需要进行一些特殊的清理任务应该尽量避免使用__del__()方法而是使用上下文管理器、with语句等方式来管理资源和清理任务。 __repr__和__str__ __repr__(self)和__str__(self)都是用于返回对象的字符串表示形式但它们的用途不同。__repr__(self)主要用于调试和开发而__str__(self)则主要用于用户友好的输出。 举个例子考虑下面的Python类 class Person:def __init__(self, name, age):self.name nameself.age agedef __repr__(self):return fPerson(name{self.name}, age{self.age})def __str__(self):return f{self.name} is {self.age} years old 在这个例子中__repr__返回一个类似于构造函数调用的字符串用于显示对象的内部状态。而__str__则返回一个可读的字符串用于显示对象的外部状态。例如 person Person(Alice, 25)print(person) # 调用 __str__ Alice is 25 years oldperson # 调用 __repr__ Person(nameAlice, age25) 这样在调试和开发时我们可以使用__repr__方法来查看对象的内部状态而在用户友好的输出中使用__str__方法来提供易于理解的字符串表示形式。 在实际使用中我们可以通过内置函数repr()和str()来分别获取对象的__repr__和__str__表示形式。例如 p Person(Alice, 25) print(repr(p)) # Person(Alice, 25) print(str(p)) # Alice (25 years old) __repr__()是__str__()的“备胎”如果找不到__str__()就会找__repr__()方法。%r默认调用的是__repr__()方法%s调用__str__()方法 __formate__ __format__方法是Python中用于格式化对象输出的特殊方法。它可以让我们在使用字符串格式化方法如str.format()、f-string等输出对象时自定义输出格式。 __format__方法有两个参数分别为格式字符串和格式参数。格式字符串用于指定输出格式格式参数则是要输出的参数值。其中格式字符串是一个包含格式说明符的字符串可以使用大括号{}来指定要输出的参数并在大括号中使用冒号:来指定参数的格式。 下面是一个简单的例子展示如何在类中定义__format__方法来控制输出格式 class Point:def __init__(self, x, y):self.x xself.y ydef __format__(self, format_spec):if format_spec r:return f({self.y}, {self.x})else:return f({self.x}, {self.y})p Point(1, 2) print(Formatted point: {:r}.format(p)) 在上面的例子中我们定义了一个Point类包含x和y两个属性。我们在类中定义了__format__方法用于控制输出格式。如果格式字符串为r则输出(y, x)的格式否则输出(x, y)的格式。在最后一行我们使用str.format()方法并传入!r参数来触发__format__方法输出结果为Formatted point: (2, 1)。 需要注意的是如果我们定义了__format__方法但在格式字符串中没有使用相应的格式说明符那么__format__方法将不会被调用。此外我们还可以在类中定义其他特殊方法来控制对象的输出格式例如__str__、__repr__等。 如果你对Python感兴趣想要学习python这里给大家分享一份Python全套学习资料都是我自己学习时整理的希望可以帮到你一起加油 有需要的小伙伴可以点击下方链接免费领取或者V扫描下方二维码免费领取 Python全套学习资料 1️⃣零基础入门 ① 学习路线 对于从来没有接触过Python的同学我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。 ② 路线对应学习视频 还有很多适合0基础入门的学习视频有了这些视频轻轻松松上手Python~ ③练习题 每节视频课后都有对应的练习题哦可以检验学习成果哈哈 2️⃣国内外Python书籍、文档 ① 文档和书籍资料 3️⃣Python工具包项目源码合集 ①Python工具包 学习Python常用的开发软件都在这里了每个都有详细的安装教程保证你可以安装成功哦 ②Python实战案例 光学理论是没用的要学会跟着一起敲代码动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。100实战案例源码等你来拿 ③Python小游戏源码 如果觉得上面的实战案例有点枯燥可以试试自己用Python编写小游戏让你的学习过程中增添一点趣味 4️⃣Python面试题 我们学会了Python之后有了技能就可以出去找工作啦下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂并且有阿里大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。 5️⃣Python兼职渠道 而且学会Python以后还可以在各大兼职平台接单赚钱各种兼职渠道兼职注意事项如何和客户沟通我都整理成文档了。 上述所有资料 ⚡️ 朋友们如果有需要的可以扫描下方二维码免费领取
http://www.yutouwan.com/news/182566/

相关文章:

  • 玉溪网站建设网站建设金坛网站开发
  • 做外贸怎么登陆外国网站成都商铺装修设计公司
  • 佛山市建网站做网站费用关于企业网站建设的必要性
  • 网站制作开发的步骤和方法个人网站的名字
  • 大连最好的做网站的公司公司管理软件有哪些
  • 电子商务网站建设的书佛山小程序开发平台
  • 金华永康网站建设网站建设与经营
  • 自己建网站怎么推广网络设计的基本原则有哪些
  • 无锡食品网站设计计算机平面设计主要学什么
  • 网站集约化建设讲话稿《网站平台建设》课程实训
  • 网站设计网站建设网站制作页面设计的内容
  • 做网站公司联系方式页面做网站成本
  • 网站建设实训不足推广计划书怎么写
  • 来宾网站seo荆州 商务 网站建设
  • 企业网站优化推广公司大型电子商务网站需要配服务器
  • 网站设计实训报告卖辅助网站怎么做
  • 如何申请网站com域名汽车可以做哪些广告视频网站
  • 德州企业网站优化公司做网站怎样套用模板
  • 做影视网站用的封面互联网营销培训的课程学费
  • 网站开发智能化方向睢宁县建设局网站
  • dede网站版权信息标签长治市住房保障和城乡建设管理局网站
  • 招聘网官方网站个人网站备案说明
  • 做母婴产品哪个网站做的好企业管理咨询包括哪些
  • 诸城网站建设哪家好室内设计公司排名一览表
  • 高端网站创建有的网站打不开是什么原因呢
  • 静安企业网站建设郴州建网站
  • 模板做的网站如何下载手机wap网站建设
  • 医药网站备案企业展厅设计哪里好
  • 旅游网站开发的作用济南软件优化网站建设
  • 做一个自己的免费网站做站群的网站怎么来