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

    class Foo(object):def __init__(self):"""用于给对象中赋值,初始化方法"""self.x = 123def __new__(cls, *args, **kwargs):"""用于创建空对象,构造方法:param args: :param kwargs: :return: """return object.__new__(cls)def __call__(self, *args, **kwargs):print('执行call方法')def __setitem__(self, key, value):passdef __getitem__(self, item):return item + 'uuu'def __delitem__(self, key):passdef __str__(self):"""只有在打印对象时,会自动化调用此方法,并将其返回值在页面显示出来:return: """return 'asdfasudfasdfsad'obj = Foo()
    Foo()()
    obj1 = Foo()
    obj1['k1'] = 123  # 内部会自动调用 __setitem__方法
    val = obj1['xxx']  # 内部会自动调用 __getitem__方法
    print(val)
    del obj1['ttt']  # 内部会自动调用 __delitem__ 方法obj2 = Foo()
    print(obj2)#asdfasudfasdfsad
    
    class Foo(object):def __init__(self,name,age,email):self.name = nameself.age = ageself.email = emailobj = Foo('alex',19,'xxxx@qq.com')
    print(obj)
    print(obj.name)
    print(obj.age)
    print(obj.email)
    val = obj.__dict__ # 去对象中找到所有变量并将其转换为字典
    print(val)
    
  2. 看代码写结果

    class Foo(object):def __init__(self, age):self.age = agedef 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 Base(object):def __init__(self, a1):self.a1 = a1def 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:obj.f2(1)#1 1
    #666
    #666
    
  4. 看代码写结果

    class StarkConfig(object):def __init__(self,num):self.num = numdef 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)#1
    #2
    #3
    
  5. 看代码写结果

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

    class StarkConfig(object):def __init__(self,num):self.num = numdef 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)#1 168
    #2 168
    #666 3
    
  7. 看代码写结果

    class StarkConfig(object):def __init__(self,num):self.num = numdef 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
    
  8. 看代码写结果

    class StarkConfig(object):def __init__(self,num):self.num = numdef 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] = vsite = AdminSite()
    print(len(site._registry))
    #0
    site.register('range',666)
    site.register('shilei',438)
    print(len(site._registry))
    #2site.register('lyd',StarkConfig(19))
    site.register('yjl',StarkConfig(20))
    site.register('fgz',RoleConfig(33))print(len(site._registry))
    #5
    print(site._registry)
    #{'range': 666, 'shilei': 438, 'lyd': <__main__.StarkConfig object at 0x0000021D3E4DAE48>, 'yjl': <__main__.StarkConfig object at 0x0000021D3E4DAE80>, 'fgz': <__main__.RoleConfig object at 0x0000021D3E4DAEB8>}
    
  9. 看代码写结果

    class StarkConfig(object):def __init__(self,num):self.num = numdef 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] = vsite = AdminSite()
    site.register('lyd',StarkConfig(19))
    site.register('yjl',StarkConfig(20))
    site.register('fgz',RoleConfig(33))
    print(len(site._registry)) # 3for k,row in site._registry.items():row.changelist(5)
    #19 5
    #20 5
    #666 33
    
  10. 看代码写结果

    class StarkConfig(object):def __init__(self,num):self.num = numdef 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] = vsite = AdminSite()
    site.register('lyd',StarkConfig(19))
    site.register('yjl',StarkConfig(20))
    site.register('fgz',RoleConfig(33))
    print(len(site._registry))
    # 3for k,row in site._registry.items():row.run()#19 999
    #20 999
    #666 33
    
  11. 看代码写结果

    class UserInfo(object):passclass Department(object):passclass StarkConfig(object):def __init__(self,num):self.num = numdef 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))
    #2
    for k,row in site._registry.items():row.run()#<class '__main__.UserInfo'> 999
    #<class '__main__.Department'> 999
    
  12. 看代码写结果

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

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

    class Base(object):passclass Foo(Base):passobj = Foo()print(type(obj) == Foo)#True
    print(type(obj) == Base)#False
    print(isinstance(obj,Foo))#True
    print(isinstance(obj,Base))#True
    
  15. 看代码写结果

    class StarkConfig(object):def __init__(self, num):self.num = numdef __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()
    #1
    #11
    
  16. 看代码写结果

    class StarkConfig(object):def __init__(self, num):self.num = numdef 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])#l
    print(v2[2])#报错
    
  17. 补全代码

    class Context:passwith Context() as ctx:ctx.do_something()
    
    class Context:def __enter__(self):return selfdef __exit__(self, exc_type, exc_val, exc_tb):passdef do_something(self):passwith Context() as ctx:ctx.do_something()
    
  18. 补全代码

    class Stack(object):def __init__(self):self.data_list = []def push(self,val):passdef pop(self):passobj = 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的对象维护成 后进先出 的结构。
    
    class Stack(object):def __init__(self):self.data_list = []def push(self, val):self.data_list.append(val)def pop(self):self.data_list.pop()obj = Stack()
    obj.push('alex')
    obj.push('武沛齐')
    obj.push('金老板')
    v1 = obj.pop() # 金老板
    v2 = obj.pop() # 武沛齐
    v3 = obj.pop() # alex
    
  19. 如何主动触发一个异常?

    try:int('123')raise Exception('主动触发了一个异常') # 代码中主动抛出异常
    except Exception as e:print(e)
    
  20. 看代码写结果

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

老男孩python全栈s21day21作业(面向对象)相关推荐

  1. 老男孩python全栈s21day25作业

    一.正则表达式练习 1.匹配整数或者小数(包括正数和负数) \-?\d+(\.\d+)? 2.匹配年月日日期 格式2018-12-6 \d{1,4}\-\d{1,2}\-\d{1,2} 3.匹配qq号 ...

  2. 老男孩python全栈s21day04作业

    简述解释性语言和编译型语言的区别? 编译型语言:代码结束后,编码器会将其完全编译成另一种更贴近机器语言的文件,然后交给计算机执行 解释型语言:代码结束后,解释器会根据代码进行逐行的解释,这个过程边解释 ...

  3. 老男孩python全栈s21day03作业

    day03 作业 有变量name = "aleX leNb " 完成如下操作: 移除 name 变量对应的值两边的空格,并输出处理结果 name = "aleX leNb ...

  4. 老男孩python全栈s21day15作业

    sys.path.append("/root/mods")的作用? 把路径/root/mods添加到python寻找模块的路径中 字符串如何进行反转? 切片[::-1] 不用中间变 ...

  5. 老男孩python全栈s21day02作业

    day02作业 1.猜数字,设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了:如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确,然后退出循环. valu ...

  6. 老男孩Python全栈9期视频完整版

    老男孩Python全栈9期视频完整版 B站:更新最快,内容最全(现已上传完毕,欢迎来撩) https://www.bilibili.com/video/av28244491/ # 第一部分:基础+模块 ...

  7. 最新《老男孩Python全栈3期项目实战》

    2018年老男孩python全栈第三期python全栈3期!2018最新Python高级全栈工程师+人工智能VIP顶级课程全套视频教程下载.某知名IT教育培训机构4个月绝密培训教程!优秀的Python ...

  8. python全栈开发工程师招聘_如何成为Python全栈开发工程师?老男孩Python全栈开发...

    对于Python这门编程语言,想必大家都是比较熟悉的,但是说道Python全栈开发,很多人就有点不解是什么意思,接下来我们共同看看吧. 什么是Python全栈开发工程师?简单的来说就是从前端页面的实现 ...

  9. 路飞学城老男孩Python全栈开发实战鸡汤部分Alex

    需要购买路飞学城内部教材,Python全栈开发实战这本书的同学,可以看这篇博文. https://www.cnblogs.com/yigongzi/p/9370817.html 转载于:https:/ ...

  10. 老男孩Python全栈学习 S9 日常作业 006

    1.使用循环打印以下效果: 1: * ** *** **** ***** 2: ***** **** *** ** * 3: * *** ***** ******* ********* for i i ...

最新文章

  1. GPU指令集技术分析
  2. Spring AOP是什么?你都拿它做什么?
  3. Linux 命令小汇总
  4. 成功解决label_error >= 0 label_error < static_cast<int>(nclass) MultiClassEvaluation: label must be i
  5. 技术分享|明源云天际集成开放平台接口中心基于IdentityServer4的鉴权机制
  6. 只想问你一句:“伤害我,你会心疼吗?”
  7. 并发说明:如何构建多线程iOS应用
  8. 产品研发过程管理专题——产品需求分析原则二
  9. VB INET控件的全部用法
  10. regexp函数 mysql_mysql 五中的REGEXP函数_mysql
  11. 自定义Dialog的小实战——根据地区选择手机号码前缀
  12. 斐讯K2 刷breed 再刷 固件 。
  13. 产品申请UL标志包括以下几个步骤
  14. 双摄像头另一个有什么用_手机双摄像头为什么有前后和后双两种?各有什么用?...
  15. 如何成为一个 IT 界的女装大佬?
  16. 松香的用法(电烙铁焊接)
  17. Downloads Help 下载帮助
  18. 输入文字时自动带空格解决办法
  19. 入网许可证_什么是入网许可证
  20. 【数据库】mysql、oracle、sqlserver按照字典顺序

热门文章

  1. 计算机常见故障判断与排除,计算机常见故障的诊断与排除PPT课件.ppt
  2. Objective-c包装类
  3. Trilateration三边测量定位算法
  4. 在线抽签html,抽签网页板代码
  5. 【项目实战一】基于人工神经网络ANN的车牌识别
  6. OkHttp完全解析(七)SPDY协议详细介绍
  7. 加载配置文件(xml文件,properties文件)demo
  8. python聊天室设计_基于python的GUI聊天室设计
  9. C++实现人机对战围棋(使用Leela Zero权重)-自动提子
  10. 12v电量显示制作方法_12V电池电量指示电路