• python_day25__各种特殊方法


    #-----------__add()__特殊方法-----------#
    # class Foo:
    # def __init__(self,name,age):
    # self.name = name
    # self.age = age
    # def __add__(self,other):
    # #self = obj1('haijing',19)
    # #other = obj2('min',18)
    # #return 123 #返回值可以任意的定义的啊
    # return slef.age+other.age #返回的是18+19
    #
    # obj1=Foo('haijing',19)
    # obj2=Foo('min',18)
    # ret = obj1+obj2 #两个对象相加,自动执行第一个对象的__add__()方法,并且将第二个对象当作参数传递进入
    # print(ret,type(ret))

    #-------------析构方法(对象被销毁时自动执行)----------------#
    #和java一样,在python中也会有销毁没人用的变量的空间的

    # class Foo:
    # def __del__(self):
    # print('析构方法')

    #----------__dict__() 作用:将对象中封装的所有内容通过字典的形式返回----------#
    # class Foo:
    # def __init__(self,name,age):
    # self.name = name
    # self.age = age
    # self.a = '123'
    #
    # obj = Foo('haijing',18)
    # d = obj.__dict__ #重要的是将没有调用到的对象,比如self.a,也给显示出来
    # print(d) #打印{'name': 'haijing', 'age': 18, 'a': '123'}
    #
    # b = Foo.__dict__
    # print(b) #将类中的所有方法打印出来,包括注释也会打印出来

    #----------__getitem__方法、__setitem__和__delitem__方法,用来处理列表+对象的语句----------# *****
    #先回顾以前讲过的列表的知识:
    # li = [11,22,33,44] #相当于li = list([11,22,33,44])
    # r1 = li[3] #去除列表中的第四个值
    # del li[3] #删除列表中的第四个值
    # print(li) #打印[11, 22, 33]
    # li[2]=666 #给列表修改值
    # print(li) #打印[11, 22, 666]
    class Foo:
    def __init__(self,name,age):
    self.name = name
    self.age = age
    self.a = '123'
    def __getitem__(self,item):
    return item+10
    def __setitem__(self,key,value):
    print(key,value)
    def __delitem__(self, key):
    print(key)

    li = Foo('haijing',18) #创建对象
    r = li[8] #自动执行__getitem__方法,自动将8当作参数传递给item
    print(r) #打印18

    li[100] = 'haijing' #自动执行__setitem__方法,自动将100传给key,将haijing传给value,所以这一句打印100 haijing

    del li[999] #自动执行__delitem__方法,将999传给key

    #----------对列表进行索引和切片取值----------# ******
    class Foo:
    def __init__(self,name,age):
    self.name = name
    self.age = age
    self.a = '123'
    def __getitem__(self,item):
    if type(item)==slice:
    print('调用者希望内部进行切皮处理')
    # slice中有start、stop、step属性 可以按下ctrl鼠标指向slice即可查看slice内部的属性
    print(slice.start) #打印<member 'start' of 'slice' objects>
    print(slice.stop) #打印<member 'stop' of 'slice' objects>
    print(slice.step) #打印<member 'step' of 'slice' objects>
    else:
    print('调用者希望内部进行索引处理')

    li = Foo('haijing',18)
    li[123] #按照索引方式取值 索引是中的123整形 打印调用者希望内部进行索引处理
    li[1:4:2] #按照切片方式取值,执行__getitem__方法,1为起始值 4为终止值 2为步长,切片中的1:4:2是slice型,并且把1:4:2传给item
    #上边这一句打印调用者希望内部进行切片处理 如果中括号中有冒号,传给item的肯定就是slice类型了
    #切片用的较少,索引用的还是较多的

    haijing in HZ 今天研究生迎新晚会 但都不如你
    2018.10.26 晚




  • 相关阅读:
    test
    【转载】ASP.NET MVC 3 —— Model远程验证
    【转载】富有客户端技术之——jQuery EasyUI
    【转载】基于ASP.NET Web Application的插件实现,附DEMO
    【转载】浅谈C#中的延迟加载(1)——善用委托
    【转载】Winform开发框架之权限管理系统
    【转载】基于我的Winform开发框架扩展而成的WCF开发框架
    [转载]10大优秀的移动Web应用程序开发框架推荐
    [转载]C#泛型列表List<T>基本用法总结
    [转载]推荐一个被大家忽视的微软的反跨站脚本库AntiXSS V3.1
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/9859146.html
Copyright © 2020-2023  润新知