21-作业-面向对象特殊成员和异常处理

  1. 列举你了解的面向对象中的特殊成员,并为每个写代码示例。

  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()) 
    
  3. 看代码写结果

    class Base(object):
        def __init__(self,a1):
            self.a1 = a1
            
        def f2(self,arg):
            print(self.a1,arg)
            
    class Foo(Base):
        def f2(self,arg):
            print('666')
            
    obj_list = [Base(1),Foo(2),Foo(3)]
    for obj in obj_list:
    	item.f2()
    
  4. 看代码写结果

    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')
    
    config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
    for item in config_obj_list:
        print(item.num)
    
  5. 看代码写结果

    class StarkConfig(object):
    
        def __init__(self,num):
            self.num = num
    
        def changelist(self,request):
            print(self.num,request)
    
    class RoleConfig(StarkConfig):
        pass
    
    config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
    for item in config_obj_list:
        item.changelist(168)
    
  6. 看代码写结果

    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)
    
    config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
    for item in config_obj_list:
        item.changelist(168)
    
  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)
    
    config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
    config_obj_list[1].run()
    config_obj_list[2].run()
    
  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()
    print(len(site._registry)) 
    site.register('range',666)
    site.register('shilei',438)
    print(len(site._registry))
    
    site.register('lyd',StarkConfig(19))
    site.register('yjl',StarkConfig(20))
    site.register('fgz',RoleConfig(33))
    
    print(len(site._registry))
    print(site._registry)
    
  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.changelist(5)
    
  10. 看代码写结果

    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()
    
  11. 看代码写结果

    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))
    for k,row in site._registry.items():
        row.run()
    
  12. 看代码写结果

    class F3(object):
        def f1(self):
            ret = super().f1()
            print(ret)
            return 123
        
    class F2(object):
        def f1(self):
            print('123')
            
    class F1(F3, F2):
    	pass
    
    obj = F1()
    obj.f1()
    
  13. 看代码写结果

    class Base(object):
        def __init__(self,name):
            self.name = name
            
    class Foo(Base):
        def __init__(self,name):
            super().__init__(name)
            self.name = "于大爷"
            
    obj1 = Foo('alex')
    print(obj1.name)
    
    obj2 = Base('alex')
    print(obj2.name)
    
  14. 看代码写结果

    class Base(object):
        pass
    
    class Foo(Base):
        pass
    
    
    obj = Foo()
    
    print(type(obj) == Foo)
    print(type(obj) == Base)
    print(isinstance(obj,Foo))
    print(isinstance(obj,Base))
    
  15. 看代码写结果

    class StarkConfig(object):
        def __init__(self, num):
            self.num = num
        def __call__(self, *args, **kwargs):
            print(self.num)
    class RoleConfig(StarkConfig):
        def __call__(self, *args, **kwargs):
            print(self.num)
    
    v1 = StarkConfig(1)
    v2 = RoleConfig(11)
    
    v1() 
    v2()
    
  16. 看代码写结果

    class StarkConfig(object):
        def __init__(self, num):
            self.num = num
        def run(self):
            self()
        def __call__(self, *args, **kwargs):
            print(self.num)
            
    class RoleConfig(StarkConfig):
        def __call__(self, *args, **kwargs):
            print(345)
        def __getitem__(self, item):
            return self.num[item]
        
    v1 = RoleConfig('alex')
    v2 = StarkConfig("wupeiqi")
    
    print(v1[1])
    print(v2[2])
    
  17. 补全代码

    class Context:
    	pass
    
    with Context() as ctx:
        ctx.do_something()
    
  18. 补全代码

    class Stack(object):
        def __init__(self):
            self.data_list = []
            
        def push(self,val):
            pass
        
        def pop(self):
            pass
        
        
    obj = Stack()
    # 调用push方法,将数据加入到data_list中。
    obj.push('alex')
    obj.push('武沛齐')
    obj.push('金老板')
    
    # 调用pop讲数据从data_list获取并删掉,注意顺序(按照后进先出的格式)
    v1 = obj.pop() # 金老板
    v2 = obj.pop() # 武沛齐
    v3 = obj.pop() # alex
    
    # 请补全Stack类中的push和pop方法,将obj的对象维护成 后进先出 的结构。 
    
  19. 如何主动触发一个异常?

  20. 看代码写结果

    def func(arg):
        try:
            int(arg)
    	except Exception as e:
            print('异常')
    	finally:
            print('哦')
            
    func('123')
    func('二货')
    

预习

  • 面向对象约束

    class BaseAuthentication(object):
        """
        All authentication classes should extend BaseAuthentication.
        """
    
        def authenticate(self, request):
            """
            Authenticate the request and return a two-tuple of (user, token).
            """
            raise NotImplementedError(".authenticate() must be overridden.")
    
    
    class Foo(BaseAuthentication):
        def authenticate(self,request):
            pass
    
    obj = Foo()
    obj.authenticate()
    
  • 可迭代对象

  • 反射

posted @ 2019-06-15 09:34  指弹小能手  阅读(82)  评论(0)    收藏  举报

关于作者:专注数据库、Python 开发、ROS、深度学习,请多多赐教!

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(iamkuboy@163.com)咨询.