python - __setitem__/__getitem__/__delitem__类的内置方法

# class 内置方法:
# __setitem__
# __getitem__
# __delitem__

class Test():
    X = 100

    def __getitem__(self, item):
        print("getitem")

    def __setitem__(self, key, value):
        print("setitem")

    def __delitem__(self, key):
        print("delitem")

xx = Test()

#通过字典的方式访问类的属性,触发getitem方法
print(xx[‘X‘])

#通过字典的方式设置类的属性,触发setitem方法
xx[‘X‘] = 200

#通过字典的方式删除类的属性,触发delitem方法
del xx[‘X‘]

# 结尾:
# 通过点的方式访问类属性或者修改删除,那么触发类的attr的内置方法
# 而通过字典的方式访问类或者修改删除,那么触发类的item的内置方法

原文地址:https://www.cnblogs.com/Anec/p/9784677.html

时间: 2024-10-10 19:14:39

python - __setitem__/__getitem__/__delitem__类的内置方法的相关文章

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__(

几个类的内置方法

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

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

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

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

''' 类的内置方法(魔方方法): 凡是在类内部定义的,__开头__结尾的方法,都是类的内置方法,也称为魔法方法 类的内置方法,会在某种条件满足下自动触发. __new__:在__init__触发前,自动触发.调用该类时,内部会通过__new__来产生一个新的对象. __init_:在调用类时自动触发.通过__new__产生的对象自动调用__init__. ''' class Demo(object): def __new__(cls, *args, **kwargs): print('from

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__方法可

python 类中内置方法的重写

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

python-面向对象类的内置方法

内置方法 __init__(self [, ...]) init对象实例化时被调用,该方法不能有返回值 __new__(cls [, ...]) 对象实例化时第一个被调用的方法 默认里面的参数,会原封不动的传给init方法 返回一个对象obj,通常返回class类对象,也可以返回其他类对象 # 当继承一个不可变类型时,又需要的时候使用 # 需求:输入字符串,输出的是大写的字符串 class CapStr(str): def __new__(cls,string): string = string

类的内置方法

isinistance(obj, cls) 检查obj是否是类cls的对象 class Foo(object): pass obj = Foo() print(isinstance(obj, Foo)) issubclass(sub,super) 检查sub类是否是super类的派生类 class Foo(object): pass class Bar(Foo): pass print(issubclass(Bar, Foo)) __setitem__,__getitem__,__delitem

面向对象:类的内置方法

__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