zoukankan      html  css  js  c++  java
  • 组合补充--类的特殊成员

    一:组合的补充(逐级进阶对比)

     1),类和对象是否能做字典的key?

    class Foo:
        pass
    
    user_info = {
        Foo:1,
        Foo():5
    }
    print(user_info)
    
    
    #{<class '__main__.Foo'>: 1, <__main__.Foo object at #0x02005990>: 5}

     2),对象中到底有什么?

    class Foo(object):
        def __init__(self,age):
            self.age = age
    
        def display(self):
            print(self.age)
    
    data_list = [Foo(8),Foo(9)]
    for item in data_list:
        print(item.age,item.display())
    
    
    #8
    #8 None
    #9
    #9 None

    3)

    class StarkConfig(object):
        def __init__(self,num):
            self.num = num
    
        def changelist(self,request):
            print(self.num,request)
    
    class RoleConfig(StarkConfig):
        def changelist(self,request):
            print('666')
    
    #创建一个列表,列表中有三个对象(实例)
    ##[StarkConfig对象(num = 1),StarkConfig对象(num = 2),RoleConfig对象(num = 3)]
    config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
    for item in config_obj_list:
        print(item.num)
    
    #1 2 3

    4)

    class StarkConfig(object):
        def __init__(self,num):
            self.num = num
    
        def changelist(self,request):
            print(self.num,request)
    
    class RoleConfig(StarkConfig):
        pass
     # 创建了一个列表,列表中有三个对象(实例)
    # [ StarkConfig对象(num=1), StarkConfig对象(num=2), RoleConfig对象(num=3) ]
    config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
    for item in config_obj_list:
        item.changelist(168)
    
    
    # 1   168
    # 2   168
    # 3   168
    View Code

    5)

    class StarkConfig(object):
        def __init__(self,num):
            self.num = num
    
        def changelist(self,request):
            print(self.num,request)
    class RoleConfig(StarkConfig):
        def changelist(self,request):
            print(666,self.num)
    # 创建了一个列表,列表中有三个对象(实例)
    #[ StarkConfig对象(num=1), StarkConfig对象(num=2), RoleConfig对象(num=3) ]
    config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
    for item in config_obj_list:
        item.changelist(168)
    
    
    # 1  168
    # 2  168
    # 666  3
    View Code

    6)

    class StarkConfig(object):
        def __init__(self,num):
            self.num = num
    
        def changelist(self,request):
            print(self.num,request)
    
        def run(self):
            self.changelist(999)
    
    class RoleConfig(StarkConfig):
        def changelist(self,request):
            print(666,self.num)
    
    config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
    config_obj_list[1].run()
    config_obj_list[2].run() 
    
    
    #2 999
    #666 3
    View Code

    7)

    class StarkConfig(object):
    
        def __init__(self,num):
            self.num = num
    
        def changelist(self,request):
            print(self.num,request)
    
        def run(self):
            self.changelist(999)
    
    class RoleConfig(StarkConfig):
    
        def changelist(self,request):
            print(666,self.num)
    
    
    class AdminSite(object):
        def __init__(self):
            self._registry = {}
    
        def register(self,k,v):
            self._registry[k] = v
    
    site = AdminSite()
    print(len(site._registry))       # 0(长度)
    site.register('range',666)
    site.register('shilei',438)
    print(len(site._registry))       # 2
    
    site.register('lyd',StarkConfig(19))
    site.register('yjl',StarkConfig(20))
    site.register('fgz',RoleConfig(33))
    
    print(len(site._registry))       # 5
    View Code

    8)

    class StarkConfig(object):
    
        def __init__(self,num):
            self.num = num
    
        def changelist(self,request):
            print(self.num,request)
    
        def run(self):
            self.changelist(999)
    
    class RoleConfig(StarkConfig):
    
        def changelist(self,request):
            print(666,self.num)
    
    class AdminSite(object):
        def __init__(self):
            self._registry = {}
    
        def register(self,k,v):
            self._registry[k] = v
    
    site = AdminSite()
    site.register('lyd',StarkConfig(19))
    site.register('yjl',StarkConfig(20))
    site.register('fgz',RoleConfig(33))
    print(len(site._registry)) # 3
    
    for k,row in site._registry.items():
        row.changelist(5)
    
    #  len = 3
    #  19  5
    #  20  5
    #  666  33
    View Code

    9)

    class StarkConfig(object):
    
        def __init__(self,num):
            self.num = num
    
        def changelist(self,request):
            print(self.num,request)
    
        def run(self):
            self.changelist(999)
    
    class RoleConfig(StarkConfig):
    
        def changelist(self,request):
            print(666,self.num)
    
    class AdminSite(object):
        def __init__(self):
            self._registry = {}
    
        def register(self,k,v):
            self._registry[k] = v
    
    site = AdminSite()
    site.register('lyd',StarkConfig(19))
    site.register('yjl',StarkConfig(20))
    site.register('fgz',RoleConfig(33))
    print(len(site._registry))                               # 3
    
    for k,row in site._registry.items():
        row.run()
    
    
    #  #19   999
    #  #20   999
    #  # 666  33
    View Code

    10)

    class UserInfo(object):
        pass
    
    class Department(object):
        pass
    
    class StarkConfig(object):
    
        def __init__(self,num):
            self.num = num
    
        def changelist(self,request):
            print(self.num,request)
    
        def run(self):
            self.changelist(999)
    
    class RoleConfig(StarkConfig):
    
        def changelist(self,request):
            print(666,self.num)
    
    class AdminSite(object):
        def __init__(self):
            self._registry = {}
    
        def register(self,k,v):
            self._registry[k] = v(k)
    
    site = AdminSite()
    site.register(UserInfo,StarkConfig)
    site.register(Department,StarkConfig)
    print(len(site._registry)) # 3
    for k,row in site._registry.items():
        row.run()
    
    
    #2
    #<class '__main__.UserInfo'> 999
    #<class '__main__.Department'> 999
    View Code
  • 相关阅读:
    发行版Linux和麒麟操作系统下netperf 网络性能测试
    Linux下RPM包的安装
    CentOS7下安装NVIDIA独立显卡驱动出现X service error问题解决方法
    真实的物理机安装Centos7系统后网卡只有lo没有eno1的解决办法:实际上是物理机未安装网驱动卡
    Windows7系统下OpenCV2.4.4+PCL1.6.0+SSBA3.0+VS2010 IDE32环境下编译和安装以实现Sfm和PCL点云数据可视化
    VC++编译错误error C2065: “HANDLE”: 未声明的标识符及添加winbase.h后提示winbase.h(243): error C2146: 语法错误: 缺少“;”(在标识符“Internal”的前面)的解决办法
    [转]VS2013+简单稀疏光束调整库SSBA配置(64位编译)
    std::max、std::min error C2589: “(”:“::”右边的非法标记,error C2059: 语法错误:“::”
    理解图像卷积和滤波的典型博文
    [转]OPENCV3.3+CUDA9.0 环境搭建若干错误总结
  • 原文地址:https://www.cnblogs.com/wangjun187197/p/9557281.html
Copyright © 2011-2022 走看看