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,通过修改达到了和正常属性的调法

  • 相关阅读:
    美化单选按钮
    url的处理
    时间戳处理
    模板渲染引擎手册
    Web前端工具——Live Reload – Chrome扩展
    属性(Properties)和字段在C#中的关系
    MVC3中的Model
    使用System.Web.Mvc.Ajax
    javascript之DOM操作
    Javascript之BOM(window对象)
  • 原文地址:https://www.cnblogs.com/accolade/p/10519477.html
Copyright © 2011-2022 走看看