zoukankan      html  css  js  c++  java
  • 9 [面向对象]-内置方法

    1.isinstance(obj,cls)和issubclass(sub,super)

    # isinstance(obj,cls)检查是否obj是否是类 cls 的对象
    
    class Foo(object):
        pass
    obj = Foo()
    print(isinstance(obj, Foo))
    
    
    # issubclass(sub, super)检查sub类是否是 super 类的派生类
    
    class Foo(object):
        pass
    class Bar(Foo):
        pass
    print(issubclass(Bar, Foo))
    
    
    # 运行结果
    True
    True
    

      

    2、 item系列:属性操作

    • __setitem__,__getitem__,__delitem__
    class Foo:
        def __getitem__(self, item):
            print('getitem..')
            print(item)
    
        def __setitem__(self, key, value):
            print('setitem')
            print(key,value)
    
        def __delitem__(self, key):
            print('delitem')
            print(key)
    
    f = Foo()
    
    f['name']           # 查看属性 obj.name
    f['name'] = 'alex'  # 设置属性
    del f['name']       # 删除属性
    >>>>>
    getitem..
    name
    setitem
    name alex
    delitem
    name
    

      

      (2)例子2

    #  item系列
    
    class Foo:
        def __init__(self, name):
            self.name = name
    
        def __getitem__(self, item):    # item='name'
            print('getitem..')
            return self.__dict__[item]  # self.__dict__[name]
    
        def __setitem__(self, key, value):
            print('setitem')
            # print(key,value)
            # self.key = value  # 错误演示 {'name': 'alex', 'key': 'male'}
            self.__dict__[key] = value  # {'name': 'alex', 'sex': 'male'}
    
        def __delitem__(self, key):
            print('delitem')
            # print(key)
            # del self.__dict__[key]
            self.__dict__.pop(key)
    
    f = Foo('alex')
    
    # 1.查看属性
    # obj.属性名
    print(f['name'])    # 查看属性obj.name
    # print(f['namexxx'])    # 没有namexxx属性
    
    
    # 2.设置属性
    f['sex'] = 'male'  # 添加属性
    # f['sex'] = 'male'
    print(f.__dict__)
    print(f.sex)
    
    # 3.删除属性
    # del obj.name
    del f['name']
    print(f.__dict__)
    
    
    # 自动触发执行
    
    # 对象可以变成字典对象,可以像字典一样的操作
    >>>运行结果
    getitem..
    alex
    setitem
    {'name': 'alex', 'sex': 'male'}
    male
    delitem
    {'sex': 'male'}
    

      

    3、__str__,__repr__,__format__

    # 改变对象的字符串显示__str__,__repr__
    # 自定制格式化字符串__format__
    
    
    # str 方法
    d = dict({'name':'alex'})
    print(isinstance(d, dict))
    print(d)
    
    # str函数或者print函数--->obj.__str__()
    # repr或者交互式解释器--->obj.__repr__()
    # 如果__str__没有被定义,那么就会使用__repr__来代替输出
    # 注意:这俩方法的返回值必须是字符串,否则抛出异常
    
    class People:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def __str__(self):
            print('===>str')
            return 'aaaa'   # 返回值必须是字符串,否则抛出异常
    
    obj = People('alex', 11)
    print(obj)  # 执行obj.__str__()
    》运行结果
    True
    {'name': 'alex'}
    ===>str
    aaaa
    

      

    4、__del__

    # 析构方法,当对象在内存中被释放时,自动触发执行。
    # 注:如果产生的对象仅仅只是python程序级别的(用户级),那么无需定义__del__,
    # 如果产生的对象的同时还会向操作系统发起系统调用,即一个对象有用户级与内核级两种资源,
    # 比如(打开一个文件,创建一个数据库链接),则必须在清除对象的同时回收系统资源,这就用到了__del__。
    
    
    f = open('settings.py', 'r', encoding='utf-8')
    data = f.read()
    f.close()  # 回收操作系统的资源
    print(data)
    
    # print(f)
    # f.read()
    # 析构方法,当对象在内存中被释放时,自动触发执行。
    
    class Open:
        def __init__(self,filename):
            print('open file')
            self.filename = filename
    
        def __del__(self):
            print('回收操作系统资源:self.close')
    
    f = Open('settings.py')
    
    print('---main---')
                        # 程序结束 执行 del f # f.__del__()
    >>运行结果
    open file
    ---main---
    回收操作系统资源:self.close
    

      

     5.其他

      博客:http://www.cnblogs.com/linhaifeng/articles/6204014.html

  • 相关阅读:
    How to Create a site at the specified URL and new database (CommandLine Operation)
    Using Wppackager to Package and Deploy Web Parts for Microsoft SharePoint Products and Technologies
    SQL Server Monitor v0.5 [Free tool]
    How to build Web Part
    Deploy web part in a virtual server by developing a Web Part Package file(.cab)
    How to recreate "sites" link if you delete it accidentally
    SharePoint Portal Server管理匿名访问设置
    Monitor sql connection from .Net SqlClient Data Provider
    Brief installation instruction of Sharepoint Portal Server
    How to Use SharePoint Alternate URL Access
  • 原文地址:https://www.cnblogs.com/venicid/p/8617579.html
Copyright © 2011-2022 走看看