反射、元类 练习

‘‘‘不会3、在元类中控制自定义的类产生的对象相关的属性全部为隐藏属性4、基于元类实现单例模式‘‘‘‘‘‘1、在元类中控制把自定义类的数据属性都变成大写class Father(type):    def __new__(cls,name,bases,dic):        update_dic={}        for k,v in dic.items():            update_dic.update({k.upper():v})        return type.__new__(cls,name,bases,update_dic)

class Son(metaclass=Father):    country=‘China‘    tag=‘Legend of the Dragon‘    def walk(self):        print(‘唐老鸭 is walking‘)

print(Son.__dict__)‘‘‘‘‘‘2、在元类中控制自定义的类无需__init__方法class Father(type):

    def __call__(self, *args, **kwargs):        if args:            raise TypeError(‘must use keyword argument for key function‘)        obj = object.__new__(self)        for k,v in kwargs.items():            obj.__dict__[k.upper()]=v        return obj

class Son(metaclass=Father):    country=‘China‘    tag=‘Legend of the Dragon‘ #龙的传人

    def walk(self):        print(‘唐老鸭 is walking‘)

p=Son(name=‘tank‘,age=18,sex=‘male‘)print(p.__dict__)‘‘‘

原文地址:https://www.cnblogs.com/0B0S/p/12706755.html

时间: 2024-11-09 18:55:24

反射、元类 练习的相关文章

Python第二十一课(反射/元类)

Python第二十一课(反射/元类)    >>>思维导图>>>中二青年 反射reflect 什么是反射, 其实是反省,自省的意思 反射指的是一个对象应该具备,可以检测,修改,增加自身属性的能力 反射就是通过字符串操作属性 涉及的四个函数,这四个函数就是普通的内置函数 没有双下划綫,与print等等没有区别 hasattr getattr setattr delattr p = Person("jack",18,"man") #

7.28 多态 反射 元类

多态 1.什么是多态 多态指的是一类事物有多种形态 例如: 动物有多种形态: 人,狗,猪 在程序中多态指的是,不同对象可以响应相同方法,并可以有自己不同的实现方式 2.为什么需要多态 案例分析: import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def talk(self): pass class People(Animal): #动物的形态之一:人 def talk(self): prin

OOP 反射&元类

面向对象 反射:reflect,可以理解为自省的意思 反射是指一个对象应该具有自我检测.修改.增加自身属性的能力 反射就是通过字符串操作属性 涉及到的函数:hasattr & getattr & setattr & delattr hasattr(对象,'属性名'):判断某个对象是否存在某个属性 getattr(对象,'属性名',None):从对象中取出属性     第三个值位默认值,当属性不存在是返回默认值 setattr(对象,'属性名','属性对应的值'):为对象设置添加新的

反射 元类

1.反射 reflect 反射指的是一个对象应该具备,可以检测,修改,增加自身属性的能力 反射就是通过字符串操作属性 涉及四个普通的内置函数,没有双下划线, hasattr    getattr     setattr      delattr class Person: def __init__(self,name,age,male): self.name = name self.age = age self.male = male p = Person('jack',18,'man') if

QObject提供了QMetaObject元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化

元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化其中元类又提供了:classInfo,className,构造函数,多重祖先元类,method, property, Enumerator, Signal, Slot等等 http://doc.qt.io/qt-5/qobject.html http://doc.qt.io/qt-5/qmetaobject.html 我感觉Qt的出现,除了提供GUI以外,主要就是提

Python基础- 类和对象(使用、继承、派生、组合、接口、多态、封装、property、staticmethod、classmethod、反射、slots、上下文管理协议、元类)

标签: python对象 2017-07-01 16:28 79人阅读 评论(0) 收藏 举报  分类: python(11)  版权声明:本文为广大朋友交流学习,如有纰漏望不吝赐教,若存在版权侵犯请及时与我联系 目录(?)[+] 一.初识类和对象 在python3中类型就是类 先定义类在产生相对应的对象,也就是现有了概念再有了实体 class Garen: camp = 'Demacia' def attack(self): print('attack') 1.如何使用类 在python3:

反射与元类

1.isinstance与issubclass 在介绍反射之前,先来介绍两个关于类的内置方法,第一个是用来判断对象是否是某一类的对象(以前常说的判断是否是某一类型,类与类型其实是一个概念),第二个则是用来判断某一类是否是继承了另一个类 l=list([1,2,3]) print(isinstance(l,list)) #True class People: def __init__(self): pass class Chinese(People): def __init__(self): pa

python3全栈开发-内置函数补充,反射,元类,__str__,__del__,exec,type,__call__方法

一.内置函数补充 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() print(isinstance(obj, Foo)) #结果为True 2.issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass print(issubclass(Bar, Foo)) #结果为True

python面向对象高级:反射、魔法方法、元类

自省/反射什么是反射?自省也称作反射,这个性质展示了某对象是如何在运行期取得自身信息的.并且在python里,反射可以使得程序运行时对象拥有增删改查它本身属性或行为的一种能力如果Python不支持某种形式的自省功能,dir和type内建函数,将很难正常工作.还有那些特殊属性,像__dict__,__name__及__doc__反射的使用场景? 即插即用,即可以事先定义好接口,接口只有在被完成后才会真正执行 比如:如果和别人共同合作开发项目,但是需要用到对方的类的方法,对方还没完成 f1=FtpC

反射,元类

内置函数 # class Foo: # pass # obj=Foo # print(isinstance(obj,Foo)) #在python3中统一类与类型的概念 #d={"x":1}#d=dict({"x":1}) #print(type(d) is dict) # print(isinstance(d,dict)) isinstance(对象名,类名) 判断是否是实列 # issubclass(子类,父类) 判断一个类是不是另一个类的子类 # class P