zoukankan      html  css  js  c++  java
  • day34 反射、面向对象内置方法:如__str__、面向对象的软件开发

    Python之路,Day21 = 反射、面向对象内置方法:如__str__、面向对象的软件开发

    几个内置查看的方法使用

    .__base__ 查看类的继承结构
    .mro() 对象找属性的顺序存在里面

    -----课程内容-----

    ---反射

    hasattr(object, name)
    getattr(object, name, default)
    defult 找不到的时候,返回default
    setattr(object, key, values)
    delattr(object, key)

    ---面向对象内置方法

    isinstance(obj, type) # 查看是不是它的实例issubclass(child, parent) # 查看是否为子类

    __str__
    打印对象的时候会触发 object.__str__() 这个方法,返回值必须是字符串
    如 print(object)

    __del__
    对象销毁的时候执行这个函数下的内容,可以用来处理一些对象小时候的善后工作

    __getitem__
    f['name']

    __setitem__
    f['name'] = 'zhang'

    __delitem__
    del f['name']

     1 class Foo:
     2     def __init__(self,name,age,sex):
     3         self.name=name
     4         self.age=age
     5         self.sex=sex
     6     def __getitem__(self, item):
     7         # print(self,item,type(item))
     8         # return getattr(self,item)
     9         return self.__dict__[item]
    10     def __setitem__(self, key, value):
    11         # setattr(self,key,value)
    12         self.__dict__[key]=value
    13 
    14     def __delitem__(self, key):
    15         # delattr(self,key)
    16         self.__dict__.pop(key)
    17 
    18     def __len__(self):
    19         return 10
    20 f=Foo('egon',18,'male')
    21 # print(f.name) #f['name']
    22 # print(f.age) #f['age']
    23 # print(f.sex) #f['sex']
    24 
    25 # print(f['name'])
    26 
    27 # f['name']='egon_nb'
    28 # print(f.__dict__)
    29 # del f['name']
    30 # print(f.__dict__)
    31 
    32 print(len(f))
  • 相关阅读:
    Browserify
    PhantomJS:基于WebKit、开源的服务器端JavaScript API
    ruby安装
    ssh tunnel通道
    tomcat部署方法总结
    Tomcat 部署:工程下 META-INF 目录下的 Context.xml
    UVA 674 Coin Change (DP)
    Android入门——电话拨号器和四种点击事件
    matlab reshape函数
    看看走过的路——个人重构
  • 原文地址:https://www.cnblogs.com/alwaysInMe/p/7133594.html
Copyright © 2011-2022 走看看