python魔法函数__dict__和__getattr__的妙用 __dict__ __dict__是用来存储对象属性的一个字典,其键为属性名,值为属性的值. 既然__dict__是个字典那么我们就可以用字典的属性了. 我们通过使用dir()属性来看看__dict__都有哪些属性. ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '…
技术背景 本文主要涵盖两个领域的知识点:python的魔法函数和量子计算模拟,我们可以通过一个实际的案例来先审视一下这两个需求是如何被结合起来的. 量子计算模拟背景 ProjectQ是一个非常优雅的开源量子计算编程框架,其原作者是来自与瑞士联邦理工的博士Damian和Thomas.该量子计算编程框架是一个从量子计算应用->量子线路编译->哈密顿量模拟->量子计算模拟->量子硬件API对接都有相应实现的.非常全面的量子计算编程框架.其开源地址为:https://github.com/…
class Www: def __init__(self,name): self.name=name def __str__(self): return '名称 %s'%self.name #__repr__=__str__ *这是在__str__转换__repr__函数的偷懒小方法 #__str__函数是可以直接把对实例进行调用并得到使用 '''交互模式: 方法一>>> print(Www('实验')) 方法二>>> s=Www('实验') >>>…
python中定义的以__开头和结尾的的函数.可以随意定制类的特性.魔法函数定义好之后一般不需要我们自己去调用,而是解释器会自动帮我们调用. __getitem__(self, item) 将类编程一个可迭代的对象.对象元素为item内的元素. __len__(self,) 返回类的长度(如果没有改魔法函数就会报错) __repr__(self)  定义类在开发模式调用时出来的内容 __str__(self) 定义print(类)出来的状态,即将类字符串化 __add__(self, other…
目录: 一. __getattribute__ 二.__str__,__repr__,__format__ 三.__doc__ 四.__module__和__class__ 一. __getattribute__                                                                class Foo: def __init__(self,x): self.x=x def __getattr__(self, item): print('执行…
getattr 在访问对象的属性不存在时,调用__getattr__,如果没有定义该魔法函数会报错 class Test: def __init__(self, name, age): self.name = name self.age = age def __getattr__(self, item): print(item) // noattr return 'aa' test = Test('rain', 25) print(test.age) // 25 print(test.noatt…
魔法函数会增强python类的类型,独立存在 __getitem class Company: def __init__(self, employees): self.employees = employees def __getitem__(self, item): return self.employees[item] company = Company(['a', 'b', 'c']) for val in company: print(val) company1 = company[:2…
看了魔法函数,有一点疑问.1中需要用self.word才能执行,而2直接用self就可以执行.而1中Word继承了int基本类型,但在__new__时并没有什么卵用.当用 Word(“123”)来实例化时,看到的运算结果是以字符串形式来进行运算的,比如“123”*3=123123123. 1. class Word(int): def __new__(cls, word): word = int(word) return int.__new__(cls,word) def __init__(se…
__repr__和__str__都是python中的特殊方法,都是用来输出实例对象的,如果没有定义这两个方法在打印的时候只会输出实例所在的内存地址 这种方式的输出没有可读性,并不能直观的体现实例.python提供了__repr__和__str__这两种方法来改进,如下: 在第二个例子中第一次直接输出实例并没有返回str,只改变了print的输出,由此可见__repr__改变的是所有的输出,而__str__改变的是print输出,所以当我们没有重构__str__只重构了__repr__同样是可以使…
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第10篇文章,我们来聊聊Python当中的类. 打印实例 我们先从类和对象当中最简单的打印输出开始讲起,打印一个实例是一个非常不起眼的应用,但是在实际的编程当中却非常重要.原因也很简单,因为我们debug的时候往往会想看下某个类当中的内容是不是符合我们的预期.但是我们直接print输出的话,只会得到一个地址. 我们来看一个例子: class point:    def __init__(self, x, y): …