zoukankan      html  css  js  c++  java
  • Python基础作业第十九天

    1.类变量和实例变量的区别

      实例变量:每个实例都应该拥有的对象

      类变量:一类事物统一拥有的变量,所有的该类对象都共享这个变量(最好用类名访问)

    2.super的作用

    1. super并不是一个函数,是一个类名,形如super(B, self)事实上调用了super类的初始化函数,
           产生了一个super对象;
      2. super类的初始化函数并没有做什么特殊的操作,只是简单记录了类类型和具体实例;
      3. super(B, self).func的调用并不是用于调用当前类的父类的func函数;
      4. Python的多继承类是通过mro的方式来保证各个父类的函数被逐一调用,而且保证每个父类函数
           只调用一次(如果每个类都使用super);
      5. 混用super类和非绑定的函数是一个危险行为,这可能导致应该调用的父类函数没有调用或者一
           个父类函数被调用多次。 

    3. isinstance和type的区别,并用代码说明 

    type(obj) 表示查看obj是由哪个类创建的.也可以帮我们判断xxx是否是xxx数据类型的

    class Base:
        pass
    class Foo(Base):
        pass
    class Bar(Foo):
        pass
    
    ret=Base()
    print(ret,type(ret))

    isinstance可以判断该对象是否是xxx家族体系中的(只能往上判断),也可以判断xxx是yyy类型的数据. 但是isinstance没有type那么精准.

    class Base:
        pass
    class Foo(Base):
        pass
    class Bar(Foo):
        pass
    
    print(isinstance(Bar(),Bar))
    print(isinstance(Foo(),Bar))

    4.补全代码

    def func(arg):
         """
         判断arg是否可以被调用,如果可以则执行并打印其返回值,否则直接打印结果
         :param arg:
         """
         pass

    def func(arg):
        if callable(arg)==True:
            return arg()
        else:
            print(callable(arg))

    5.补全代码
     def func(*args):
         """
          args Foo
         :param args:
         """
         pass

    class Boy:
        pass
    class Girl:
        pass
    
    def func(*args):
        a=0
        b=0
        for i in args:
            if type(i)==Boy:
                a +=1
            elif type(i)==Girl:
                b +=1
        return a,b

    6.看代码写结果并画图表示对象和类的关系以及执行流程

    class StarkConfig(object):
        list_display=[]
        def get_list_display(self):
            self.list_display.insert(0,33)
            return self.list_display
    class RoleConfig(StarkConfig):
        list_display = [11,22]
    s1 = StarkConfig()
    s2 = StarkConfig()
    result1 = s1.get_list_display()
    print(result1)#[0,33]
    result2 = s2.get_list_display()
    print(result2)

    结果:[33]

    [33,33]

    7.看代码写结果并画图表示对象和类的关系以及执行流程

    class StarkConfig(object):
        list_display = []
        def get_list_display(self):
            self.list_display.insert(0,33)
            return self.list_display
    class RoleConfig(StarkConfig):
        list_display = [11,22]
    s1 = StarkConfig()
    s2 = RoleConfig()
    result1 = s1.get_list_display()
    print(result1)
    result2 = s2.get_list_display()
    print(result2)

    结果:[33]

    [33,11,22]

    8.看代码写结果并画图表示对象和类的关系以及执行流程

    class StarkConfig(object):
        list_display = []
        def get_list_display(self):
            self.list_display.insert(0,33)
            return self.list_display
    class RoleConfig(StarkConfig):
        list_display = [11,22]
    s1 = RoleConfig()
    s2 = RoleConfig()
    result1 = s1.get_list_display()
    print(result1)
    result2 = s2.get_list_display()
    print(result2)

    结果:[33,11,22]

    [33,33,11,22]

    9.看代码写结果

    class Base(object):
        pass
    class Foo(Base):
        pass
    print(issubclass(Base, Foo))
  • 相关阅读:
    分布式事务框架seata入门
    生活==不易
    LR Socket接收超时TPS上不去解决方法
    Loadrunner拼装(并发用户)唯一值方法
    shell/Python复制文件和文件夹
    redis可以设置过期key回调实现延时队列
    计算机USB读写权限统一管理(在域环境中)
    微软Win10最新BUG_2021年9月15日_KB5005565更新之后打印机突然连接不上 或 不能打印0x0000011b(附解决方案)!
    SQLServer中update没带where的回滚操作(Update或者Delete误操作恢复方法)
    107.如何用Windows Defender全盘扫描
  • 原文地址:https://www.cnblogs.com/zhoushibin-1/p/9721201.html
Copyright © 2011-2022 走看看