php-18个魔法函数】的更多相关文章

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中以双下划线开始和结束的函数(不可自己定义)为魔法函数 调用类实例化的对象的方法时自动调用魔法函数(感觉不需要显示调用的函数都叫) 在自己定义的类中,可以实现之前的内置函数,比如下面比较元素sorted时用It函数(lt(self, other):判断self对象是否小于other对象:) class MyVector(object): def __init__(self, x, y): self.x = x self.y = y def __add__(self, oth…
内置方法:Python中声明每一个类系统都会加上一些默认内置方法,提供给系统调用该类的对象时使用.比如需要实例化一个对象时,需要调用该类的init方法:使用print去打印一个类时,其实调用的是str方法等等. init(self, …):初始化对象class,在创建新对象时调用.在方法里,可以初始化该对象的属性,否则调用其他时可能出“现has no attribute”错误: del(self):释放对象,在对象被虚拟机删除之前调用: new(cls,*args,**kwd):实例的生成操作,…
多态 一种事物具备不同的形态 例如:水 --> 固态.液态.气态 多态:# 多个不同对象可以相应同一个对象,产生不同的结果 首先强调,多态不是一种特殊的语法,而是一种状态,特性(多个不同对象可以相应同一个方法,长身不同的结果) 好处:对于使用者而言,使用成本降低 ​ 之前的USB接口下的鼠标,键盘,就属于多态 接口抽象类 鸭子类型都可以写出具备多态的代码(最简单的就是鸭子类型) ''' 要管理 鸡 鸭 鹅 如何能够最方便的管理,就是我说同一句话,他们都能理解 他们拥有相同的方法 ''' clas…
目录 php魔法函数 介绍 范例 1.__construct() 2.__destruct() 3.__call() 4.__callStatic 5.__get() 6.__set() 7.__isset() 8.__unset() 9.__sleep() 10.__wakeup() 11.__toString() 12.__invoke() 13.__set_state() 14.__clone() 15.__debuginfo() 16.__autoload() 17.__serializ…
简介 在实际项目中,我们其实并不会太多的使用魔法函数,但是一些方法或者函数均是有魔法函数演变而来的,且在一些面试过程中会遇到一些关于常见方法的实现,就会牵扯到相应的魔法函数,此处将介绍一些我认为比较常用的魔法函数. __new __.__init __ 类的构造函数,一般初始化传值使用 class Init(): def __init__(self, name): self.name = name def show_name(self): print(self.name) i = Init('t…
看了魔法函数,有一点疑问.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…
  #!/usr/bin/env python # -*- coding: utf-8 -*- import sys __metaclass__ = type """ __getattr__ 和 __getattribute__ 的区别 """ class ClassName: def __init__(self, name, info={}): self.name = name self.info = info # def __getattri…
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 可切片的对象 """ import numbers class sliceObject: def __init__(self, students): self.students = students def __reversed__(self): pass def __getitem__(self, item): """…
魔法函数 __init__函数 init函数会在实例化A这个类的时候被调用 class A(): def __init__(self): print('__init__函数') a = A() 显示结果: __init__函数 __call__函数 class A(): def __call__(self): print('__call__函数') a = A() a() 显示结果: 但类被当成一个函数的时候会被调用 如果不写A类的call函数的话,会怎么在运行程序会怎么样呢? Tracebac…