zoukankan      html  css  js  c++  java
  • 面向对象_item项目

     详细见老师博客:http://www.cnblogs.com/Eva-J/articles/7351812.html#_label9

    __getitem__\__setitem__\__delitem__

    class Foo:
        def __init__(self,name,age,sex):
            self.age=age
            self.name=name
            self.sex=sex
        def __getitem__(self, item):
            print('执行了__getitem__')
            if item in self.__dict__.keys():
                # return self.item 此处不能这样写,会报错,没有这个属性
                return self.__dict__[item]
            else:
                print('have no your find')
        def __setitem__(self,key,value):
            print('执行了__seritem__')
            self.__dict__[key]=value
        def __delitem__(self,key):
            print('执行了__delitem__')
            del self.__dict__[key]
    alex= Foo('alex',18,'male')
    print(alex['name'])#调用了__getitem__
    print(alex.name)#正常的调法
    alex.age=20#正常的改法
    print(alex.__dict__)
    alex['age']=200#调用了__setitem__,并且改正了值
    print(alex.__dict__)
    del alex['name']#调用了__delitem__
                    #此时的del 并不是删除的意思,而是调出了__delitem__
                    #这个方法而已,所以需要在__delitem__中加入删除的代码
    print(alex.__dict__)
    '''输出结果执行了__getitem__
    alex
    alex
    {'age': 20, 'sex': 'male', 'name': 'alex'}
    执行了__seritem__
    {'age': 200, 'sex': 'male', 'name': 'alex'}
    执行了__delitem__
    {'age': 200, 'sex': 'male', 'name': 'alex'}
    '''

     注意__item__的各个内置函数的调用,

    __getitem__的调用方式是:对象[key]

                等价的调用方式:对象.属性

    __setitem__的调用方式是:对象[key]=value

                等价的调用方式:对象 .属性=value

    __delitem__的调用方式时:del 对象[key]  只是调用了__delitem__方法而已,并不是真正的删除

                等价的调用方式:del 对象.属性

    这个方法主要是记住所有的 . 变为[],便可以调此方法了

    有一个的函数的调用方式很相似:

          记起来了,这个是把方法变为属性的装饰器@property,通过修改达到了和正常属性的调法

  • 相关阅读:
    fastcgi与cgi的区别
    oracle启动脚本
    oracle表空间大小的限制和DB_BLOCK_SIZE的概念
    静默安装Oracle11G
    ls 指令的介绍
    cronolog日志切割catalina.out
    oracle expdp自动备份脚本
    tomcat开启自启动
    oracle listener.ora文件配置
    CentOS 7.0 上安装和配置 VNC 服务器
  • 原文地址:https://www.cnblogs.com/accolade/p/10519477.html
Copyright © 2011-2022 走看看