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))
  • 相关阅读:
    idea 出现 java.noSuchMechodFound
    IDEA maven 多项目 出现 java 程序包找不到
    Nginx中间件使用心得(一)
    IntelliJ IDEA 2017版 编译器使用学习笔记(三) (图文详尽版);IDE快捷键使用
    IntelliJ IDEA 2017版 编译器使用学习笔记(二) (图文详尽版);IDE快捷键使用
    IntelliJ IDEA 2017版 编译器使用学习笔记(一) (图文详尽版);IDE快捷键使用;IDE多行代码同时编写
    IntelliJ IDEA 2017版 导入项目项目名称为红色
    IntelliJ IDEA 2017版 spring-boot与Mybatis简单整合
    IntelliJ IDEA 2017版 spring-boot加载jsp配置详解(详细图文实例)
    IntelliJ IDEA 2017版 spring-boot修改端口号配置把端口号改为8081
  • 原文地址:https://www.cnblogs.com/zhoushibin-1/p/9721201.html
Copyright © 2011-2022 走看看