首页 > 其他分享 >10月18日元类、单例模式

10月18日元类、单例模式

时间:2023-10-18 14:23:51浏览次数:23  
标签:10 18 元类 init call 单例 new type

目录

1.元类复习

1.什么是元类:

因为一切皆对象这个思想,所以类也是对象,元类构造类,类是由元类实例化得到的

2.所有类的元类是谁?

是type,它是所有类的元类,同时它也是type产生的 。py3中所有的类都继承自object(包括type也继承自object)

object类由type创造,type类也是有type创造。这段话有些难理解,可以这么想type是最顶层的元类,其它的都是它自己创造的或是它创造的类创造的

3.如何自定义元类呢?

凡是继承type的类都叫元类

4._ _ init _ _ 和 _ _ new _ _ 和 _ _ call _ _这三者的关系:

元类中

_ _ init _ _ :控制类的产生,在 _ _ new _ _ 之后

_ _ call _ _ :对着对象的产生

_ _ new _ _:控制类产生最根上,其实本质最根上也不是它,是type(所有类的元类),这个是无法控制的

它们之间的优先级: _ _ call _ _ 是最高优先级的,而 _ _ new _ _ 的优先级大于 _ _ init _ _

_ _ call _ _ > _ _ new _ _ > _ _ init _ _

以生活为例子:

有一个生产魔术道具的工厂

_ _ new _ _ 方法就是决定是否让新的道具进入工厂,相当于门卫,如果新的道具被接受,工厂就会为这个道具分配一个位置

_ _ init _ _ 方法就是工厂里的工人,他接受新道具,将它加工、组装并初始化,确保道具符合工厂的标准

_ _ call _ _ 方法就是工厂的电话号码,当你打电话给工厂并告诉你需要什么道具时,工厂就会制作并提供相应的道具。

综合来看, _ _ new _ _ 决定是否接受新的产品, _ _ init _ _ 初始化产品, _ _ call _ _ 允许你像打电话一样请求产品。这三者共同协作,使得工厂能够创建、初始化和提供产品。

2.单例模式

核心就有一句话:只有一个实例对象,而不管有多少人尝试访问它。

也可以这么想:单例实际作用有点类似多态性,无论有多少对象它们调用的都是同一个实例,就像点快餐的窗口就一个窗口,谁来点餐都是通过这个窗口(实例窗口对象)。

上面的只是便于理解这么解释,实际上单例模式和多态性是不同的概念,单例模式的重点是实例的唯一性和共享,而多态性的重点是多类型对象的一致接口。

标签:10,18,元类,init,call,单例,new,type
From: https://www.cnblogs.com/slzjb/p/17772234.html

相关文章

  • 性能更强还便宜100元!酷睿i5-14600K图赏
    这次发布的只有六款型号,分别是8+1624核心的i9-14900K/KF、8+1220核心的i7-14700K/KF、6+814核心的i5-14600K/F,都是基准功耗125W,继续兼容LGA1700接口的600/700系列主板。现在酷睿i5-14600K已经来到我们评测室,下面为大家带来图赏。i5-14600K面向主流用户,采用6P+8E,即14核心20线......
  • AT_arc100_b 题解
    题意这道题是让我们把一段区间分成四个不为空的连续子序列,并算出每个区间的和,最后用四个和的最大值减去最小值,算出最终答案。分析大家首先想到的肯定是暴力法用三个循环枚举四个区间,对于每一个区间,在单独算和,这样的时间复杂度$O(n^4)$,肯定会超时。现在我们进行优化:最后求和的......
  • 银河麒麟V10-SP1商店、仓库在内网下载速度很慢
    内网环境使用sudoaptinstallwps-office下载需要6天外网直接下载http://archive2.kylinos.cn/deb/kylin/production/PART-V10-SP1/custom/partner/V10-SP1/pool/all/搜索wps信息,找到你需要的架构......
  • kubeadm 加入work 节点集群时报 http://localhost:10248/healthz处理方法
    现象:[kubelet-check]TheHTTPcallequalto'curl-sSLhttp://localhost:10248/healthz'failedwitherror:Get"http://localhost:10248/healthz":dialtcp127.0.0.1:10248:connect:connectionrefused.[kubelet-check]Itseemslikethekube......
  • P4899 [IOI2018] werewolf 狼人 题解
    P4899[IOI2018]werewolf狼人题解题目描述省流:\(n\)个点,\(m\)条边,\(q\)次询问,对于每一次询问,给定一个起点\(S\)和终点\(T\),能否找到一条路径,前半程不能走\(0\thicksimL-1\)这些点,后半程不能走\(R+1\thicksimN-1\)这些点。中途必须有一个点在\(L\thicksimR\)之......
  • CF1873B题解
    这题其实可以数学方法差小积大解决。差越小积越大,那肯定是让最小的数加一啦。将所有数的积除以最小值再乘上最小值加一。#include<bits/stdc++.h>usingnamespacestd;signedmain(){ intT; cin>>T; while(T--){ longlongcnt=0,n,a[10],minn=LONG_LONG_MAX,ans=1; c......
  • Dotnet工具箱:开源、免费的纯前端工具网站,带你探索10大工具分类和73个实时在线小工具
    https://www.cnblogs.com/Dotnet9-com/p/17767405.html1.前言大家好,我是沙漠尽头的狼。Dotnet工具箱是一个纯前端的、开源和免费的工具网站,周末我参考了开源项目it-tools,对网站界面文字进行了汉化,并重新部署了网站。该网站共有10大工具分类,提供了73个实时在线小工具。使用Vue3......
  • C#/.NET/.NET Core优秀项目和框架精选(2023年10月更新,项目分类已整理完成欢迎大家踊跃
    https://www.cnblogs.com/Can-daydayup/p/17758479.html思维导航前言开源框架开源项目实用工具&软件实用SDK&类库界面&控件&UI库加入DotNetGuide技术交流群前言帮助开发者发现功能强大、性能优越、创新前沿、简单易用的C#/.NET/.NETCore优秀项目和框架,无论你是寻......
  • 2023/10/18
    单词people民族peculiar特有的sheer(adj.)纯粹的;完全的;陡峭的(adv.)陡峭地interplay相互影响(作用)shipload船只运载量Atlantic大西洋virgin原始状态的;未开发的intricate复杂精细的veto否决;vote投票pile堆积-pilingtie-tied-tying系;链接......
  • PAT_A1067 Sort with Swap(0, i)
    Givenanypermutationofthenumbers{0,1,2,..., N−1},itiseasytosorttheminincreasingorder.Butwhatif Swap(0,*) istheONLYoperationthatisallowedtouse?Forexample,tosort{4,0,2,1,3}wemayapplytheswapoperationsinthefollowi......