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
  • 相关阅读:
    [JSOI2007][BZOJ1031] 字符加密Cipher|后缀数组
    leetcode Flatten Binary Tree to Linked List
    leetcode Pascal's Triangle
    leetcode Triangle
    leetcode Valid Palindrome
    leetcode Word Ladder
    leetcode Longest Consecutive Sequence
    leetcode Sum Root to Leaf Numbers
    leetcode Clone Graph
    leetcode Evaluate Reverse Polish Notation
  • 原文地址:https://www.cnblogs.com/wangjun187197/p/9557281.html
Copyright © 2011-2022 走看看