组合 小补充 习题(10个)

组合 小习题

 

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

  字典的 key 是可哈希 不变的         类和对象可以做字典的 key

class Foo:
    pass

user_info = {
    Foo:1,    # 类做key
    Foo():5   # 对象做key
}

print(user_info)

# {<class '__main__.Foo'>: 1, <__main__.Foo object at 0x000001E7B9569240>: 5}

 2. 对象中到底有什么?

class Foo(object):

    def __init__(self,age):
        self.age = age

    def display(self):
        print(self.age+1)

data_list = [Foo(8),Foo(9)]
for item in data_list:
    print(item.age,item.display())  # 先执行display()方法,再打印,  方法没有返回值,打印返回None


# 9      # 执行方法display
# 8 None   # 打印  方法没有返回值 为None
# 10
# 9 None

 

3. 如果子类中没有 __init__, 但是父类中有 __init__ ,那么创建子类的对象时,要按照父类的 __init__ 传参,否则报错.

class StarkConfig(object):

    def __init__(self,num):   # 此处的初始化也是子类中的,因为子类自己本身没有__init__
        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

 

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   # 自己的类有方法,则直接运行自己的

 

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

 

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

 

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)
    
# 3
# 19 5
# 20 5
# 666 33

 

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()

# 3
# 19 999
# 20 999
# 666 33

 

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

 

posted @ 2018-08-29 16:38  葡萄想柠檬  Views(102)  Comments(0)    收藏  举报
目录代码