类的内置方法(魔法方法)

'''
类的内置方法(魔方方法):
    凡是在类内部定义的,__开头__结尾的方法,都是类的内置方法,也称为魔法方法
    类的内置方法,会在某种条件满足下自动触发。

__new__:在__init__触发前,自动触发。调用该类时,内部会通过__new__来产生一个新的对象。
__init_:在调用类时自动触发。通过__new__产生的对象自动调用__init__.

'''

class Demo(object):
    def __new__(cls, *args, **kwargs):
        print('from __new__ .......')
        return object.__new__(cls, *args, **kwargs)

    def __init__(self):
        print('from __init__......')

    # __new__产生一个空的对象,并返回。该对象调用__init__的方法完成初始化。

    # 当调用obj.property获取属性时,若 ‘属性不存在’则触发。
    # def __getattr__(self, item):
    #     print(item, 'from __getattr__')
    #
    # # 当调用obj.property获取属性时,无论“属性是否存在”都触发。(有此方法时,__getattr__不会触发)
    # def __getattribute__(self, item):
    #     print(item, 'from __getattribute__')

    # # 当obj.property = value设置属性时触发
    # def __setattr__(self, key, value):
    #     print(key, value, 'from __setattr__')

    # # 当obj()时触发
    # def __call__(self, *args, **kwargs):
    #     print(args, kwargs, 'from __call__')

原文地址:https://www.cnblogs.com/Ghostant/p/11982193.html

时间: 2024-10-07 16:28:08

类的内置方法(魔法方法)的相关文章

Python进阶-----类的内置item属性方法

类的内置item相关方法只有在通过字典key操作才会触发而通过点的方式来操作,则触发attr相关方法 class Foo: def __init__(self,name,age): self.name = name self.age = age def __getitem__(self, item): print('执行getitem') return self.__dict__[item] def __setitem__(self, key, value): print('执行setitem'

类的属性、类的方法、类的内置方法

类的属性 变量在类中称为类的属性,函数在类中称为类的方法,类的属性分为以下几种: (1) 公有属性:在类中和类外都能调用的属性,定义的时候与变量的定义一致,如 color = 'yellow'(2) 私有属性:不能在类外及被类以外的函数调用,定义的时候以双下划线开头,如__color = 'yellow' (3) 内置属性: 由系统在定义类的时候默认添加的,定义的时候以前后双下划线构成,如 dict #!/usr/bin/env python class People(object): colo

几个类的内置方法

# 类的内置方法 # 双下方法 # __str__ # 当类中定义了__str__方法后,print(这个类对象时),会调用__str__. 或者格式化%s输出对象时,都会触发__str__ # __repr__ # 当类中定义了__repr__方法后,print(repr(a)),就会调用a对象中的__repr__()方法.格式化输出用%r时同样会调用__repr__ # 同样对象中如果没有定义__repr__方法,那么就会调用父类中的__repr__ # __repr__是__str__的备

面向对象:类的内置方法

__str__和__repr__:实例化一个对象,该对象的返回值是一个指向这个类的内存地址 class A: pass a = A() print(a) #打印: <__main__.A object at 0x000001FA526DA108> 自定义__str__和__repr__方法: class Func: pass def __str__(self): return '我是自定义的str' def __repr__(self): return '我是自定义的repr' a = Fun

JSP 的内置对象及方法,动作和作用,常用指令

JSP 的内置对象及方法:JSP 共有以下9 种基本内置组件:request:用户端请求,此请求会包含来自GET/POST 请求的参数:response:网页传回用户端的回应:pageContext:网页的属性是在这里管理:session:与请求有关的会话期,可以存贮用户的状态信息:application:servlet 正在执行的内容:out:用来传送回应的输出:config:servlet 的构架部件,用于存取servlet 实例的初始化参数:page:JSP 网页本身:exception:

ThinkPHP内置函数----I方法

虽然你仍然可以在开发过程中使用传统方式获取各种系统变量,例如: $id    =  $_GET['id']; // 获取get变量$name  =  $_POST['name'];  // 获取post变量$value =  $_SESSION['var']; // 获取session变量$name  =  $_COOKIE['name']; // 获取cookie变量$file  =  $_SERVER['PHP_SELF']; // 获取server变量 但是我们不建议直接使用传统方式获取,

python 类中内置方法的重写

为达成目的,经常会在类中将一些内置方法进行重写,最常见的例如__setattr__,下面就通过内置属性,来查看重写会带来什么变化 先定义一个测试用的类,代码如下 class base: def __init__(self): pass inspect.getmembers(base): # 查看内置属性 打印结果如下 ('__class__', <class 'type'>) ('__delattr__', <slot wrapper '__delattr__' of 'object'

Python之面向对象:类的内置方法

1.def __add__(self,other): c1+c2 两个实例的加法操作就是执行__add__()方法 2.__str__(self): print一个实例的时候,执行的是__str__()这个内置方法 eg: class Vector(object): def __init__(self,a,b): self.a = a self.b = b def __str__(self): return 'Vector(%d,%d)'%(self.a,self.b) def __add__(

Python类的内置方法

目录 1.new.init 2.str.repr 3.call 4.del 5.iter.next 6.getitem.setitem.delitem 7.getattr.setattr.delattr 8.getatrribute 9.enter.exit 10.get.set.delete.描述符(研究中,待补充) **(为了方便和美观,省略了各内置方法前后的__双下划线)** 1.new.init __new__方法是真正的类构造方法,用于产生实例化对象(空属性).重写__new__方法可