zoukankan      html  css  js  c++  java
  • Python面向对象之__getitem__、__setitem__、__delitem__

    #item方法
    #__func__在类内实例化的时候根据条件自动触发
    class Student:
        def __init__(self,name,age):
            self.name = name
            self.age = age
        #获取方法
        def __getitem__(self, item):
            print('get_item')
            return self.__dict__.get(item)
        #修改或新增方法
        def __setitem__(self, key, value):
            print('set_item')
            self.__dict__[key] = value
        #删除方法
        def __delitem__(self, key):
            print('del_item')
            self.__dict__.pop(key)
    
    
    s1 = Student('ryan',18)
    s2 = Student('tom',19)
    s3 = Student('tracy',20)
    s1['name']
    s1['sex'] = 'man'
    del s1['name']
    print(s1['name'])
    
    #get_item
    #set_item
    #del_item
    #get_item
    #None

     __getattr__、__setattr__、__delattr__

    class teacher:
        def __getattr__(self, item):
            print(item,'不存在')
        def __setattr__(self, key, value):
            self.__dict__[key] = value
        def __delattr__(self, item):
            self.__dict__.pop(item)
        pass
    t1 = teacher()
    t1.name
    t1.name = 'ryan'
    print(t1.name)
    del t1.name
    t1.name

      #name 不存在
      #ryan
      #name 不存在

    __getattr__只有在使用点调用属性且属性不存在的时候才会触发
    __setattr__添加/修改属性会触发它的执行
    __delattr__删除属性的时候会触发
  • 相关阅读:
    Python资源大全中文版
    Python数据结构之字符串
    一头扎进Node系列
    MySQL的安装配置与卸载
    编程日常单词
    ping请求找不到主机 请检查该名称
    Node项目日志管理
    Node版本控制利器
    JavaScript 数据去重的常用几种方法
    一头扎进Node(一)
  • 原文地址:https://www.cnblogs.com/thanos-ryan/p/13599125.html
Copyright © 2011-2022 走看看