面向对象高级C(元类补充及单例模式(待补充))

有些地方还有一点模棱两可,先放在这,周六抽一个上午把这个整理完

元类中

_init_: 控制类的产生,在__new__之后

_call_: 控制对象的产生

_new_: 控制类产生最根上,其实本质最根上也不是它,是type的__call_,但是我们看不到了

object.__new__(Person) #生成Person类的对象 空的
type.__new__(cls, name, bases, dic) #生成cls这个类对象,里面有东西

#模板:控制对象的产生
class Mymeta(type):
    def __call__(self, *args, **kwargs):
        obj = object.__new__(self) #先new一个对象
        obj.__init__(*args, **kwargs) #在初始化对象
        return obj
class Person(metaclass=Mymeta):
    def __init__(self,name):
        self.name = name
    def __call__(self, *args, **kwargs):
        print('XXXX')
p = Person('lqz')

原文地址:https://www.cnblogs.com/michealjy/p/11469311.html

时间: 2024-10-19 16:07:46

面向对象高级C(元类补充及单例模式(待补充))的相关文章

python Class:面向对象高级编程 元类:type

type的用法: 1.普通的type用法:检查类型 class my(object):     def hello(self, name='world'):         print('Hello, %s.' % name) h = my()        print(type(my))         print(type(h)) 运行结果: <type 'type'> <class '__main__.my'> my是class, 所以它的类型是type, h是class的实

面向对象中关于元类的介绍与异常处理

一.异常处理 1. 什么是异常处理     异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常     没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止 异常包含三个部分:         1. traceback异常的追踪信息         2. 异常的类型         3. 异常的信息 错误分为两大类:         1. 语法上的错误:在程序运行前就应该立即修正         2. 逻辑上的错误 2. 为何要异常处理 避免程序因为异常而崩溃,所以在应用程

元类补充

什么是元类 ? 基于python的宗旨:一切皆对象.而对象都是由类实例化得到的 class OldboyTeacher(object): school = 'oldboy' def __init__(self,name): self.name = name def run(self): print('%s is running'%self.name) t1 = OldboyTeacher('jason') # 对象t1是由类OldboyTeacher实例化得到 那么类也是对象,它又是谁实例化得到

面向对象之:元类,反射, 双下方法

[TOC] 1.元类 class A: pass obj = A() print(type('abc')) # <class 'str'> print(type([1,2,3])) # <class 'list'> print(type((22,33))) # <class 'tuple'> # type 获取对象从属于的类 print(type(A)) # <class 'type'> print(type(str)) # <class 'type'

python 面向对象编程 之 元类

元类是类的类,使我们自定义的类,即我们用class定义类本质就是元类,是类的模板 四步走: 一:控制class定义类的过程 1.先拿到类名 2.在拿到基类 3.执行类体代码,得到名称空间的dict 4.调用元类将三个参数传递进去 #其实class 是上面四步的封装.(隔离了复杂度) 二:自定义元类 class Mymeta(type): def __init__(self,class_name,class_base,class_dic): super().__init__(class_name,

【IOS 开发】Object - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射

一. Object-C 对象简单处理 1. 包装类 (1) 包装类简介 NSValue 和 NSNumber : -- 通用包装类 NSValue : NSValue 包装单个 short, int, long, float, char, id, 指针 等数据; -- NSNumber 包装类 : 用于包装 C 语言数据类型; NSNumber 方法 : -- "+ numberWithXxx :" : 将特定类型的值包装成 NSNumber; -- "- initWithX

Python 面向对象高级编程——定制类

1.1   定制类 1.1.1   __str__ >>> class Student(object): ...    def __init__(self, name): ...        self.name = name ... >>> s = Student('daidai') >>> s.name 'daidai' >>> Student('daidai').name 'daidai' >>> print(

深刻理解Python中的元类(metaclass)以及元类实现单例模式

深刻理解Python中的元类(metaclass)以及元类实现单例模式 在看一些框架源代码的过程中碰到很多元类的实例,看起来很吃力很晦涩:在看python cookbook中关于元类创建单例模式的那一节有些疑惑.因此花了几天时间研究下元类这个概念.通过学习元类,我对python的面向对象有了更加深入的了解.这里将一篇写的非常好的文章基本照搬过来吧,这是一篇在Stack overflow上很热的帖子,我看http://blog.jobbole.com/21351/这篇博客对其进行了翻译. 一.理解

Python入门之Python的单例模式和元类

本章内容 一.单例模式 二.元类 ============================= 一.单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在. 当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场.例如,某个服务器程序的配置信息存放在一个文件中,客户通过一个AppConfig的类来读取配置文件的信息.如果在程序运行期间,有很多地方需要使用配置文件的内容,也就是说,很多地方都需要创建AppConf