• 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))
  • 相关阅读:
    如何编译Linux内核
    linux启动过程
    linux ifconfig
    Android 4.0 x86安装教程 附带联网参数详细设置
    linux ntfs模块
    Java 入门进阶
    深入理解Java中的String
    Java中字符串string的数据类型
    IDEA设置JVM运行参数
    Java11实战:模块化的 Netty RPC 服务项目
  • 原文地址:https://www.cnblogs.com/zhoushibin-1/p/9721201.html
Copyright © 2020-2023  润新知