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 @   指弹小能手  阅读(78)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2017-06-15 OCP 11G 实验环境安装文档 ( RedHat5.5 + Oracle11g )

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

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

点击右上角即可分享
微信分享提示