• python全栈学习--面向对象进阶2


    内置函数

    isinstance()    #对象     类
    issubclass()    #子类    父类
    

    #反射:使用字符串数据类型的变量名来使用变量

    #文件中存储的都是字符串

    #网络上能传递的也最接近字符串

    #用户输入的

    # hash是加速寻址
    print(hash('str'))
    print(hash('str'))
    

    hash之后的数字,就是内存地址

    hash之后,将value存储在对应的内存地址中

    字典占用的内存相对的比较多

    用空间换时间

    list 占用的内存比较少,但是没有字典快

    #示例:在类中,所有对象,默认打印的是内存地址
    class List:
        def __init__(self,*args):
            self.l = list(args)
    l = List(1,2,3,4,5)
    print(l)
    

     执行输出:

     反射:

    使用字符串数据的变量名来使用变量

    wwwh 即 what,where,why,how 这4点是一种学习方法

    反射:

    使用字符串数据类型的变量名来使用变量

    1.文件中存储的都是字符串

    2.网络上能传递的也最接近字符串

    3.用户输入的也是字符串

    上面3种情况都是字符串,如果这有这种情况的,需要操作类或者模块时,就需要用到反射

    有4种应用

    类调用静态属性

    对象调用属性模块中的名字

    调用自己模块中的名字

    a = 1
    import sys
    
    b = getattr(sys.modules['__main__'], 'a')
    print(b)  # 输出变量a的值,即1
    
    def func(): print('11')
    
    c = getattr(sys.modules['__main__'], 'func')
    print(c)  # 输出func的内存地址
    getattr(sys.modules['__main__'], 'func')()  # 执行方法,输出11main__'],'func')()
    

     

    Teacher 类 wahaha方法的连续反射

    import sys
    class Teacher():
        def wahaha(self):print('wa')
    alex = getattr(sys.modules['__main__'],'Teacher')() #获取当前模块的Teacher,并执行
    print(alex)   #Teacher类的内存地址
    getattr(alex,'wahaha')()#执行方法wahaha
    

    执行后输出:

    反射静态方法:

    import sys
    class Teacher(object):
        @staticmethod
        def wahaha():print('wa')
    Teacher = getattr(sys.modules['__main__'],'Teacher')  #获取当前模块的Teacher类
    getattr(Teacher,'wahaha')()    #执行类方法,注意加括号
    

      

    找对象import sys

    class Teacher(object):
       # def wahaha(self):print('wa') @staticmethod def qqxing():print('qq') alex = Teacher() b = getattr(sys.modules['__main__'],'alex') print(b)

      

     

    class Student:
        def cls001(self):print('班级一')
        @staticmethod
        def cls002():print('班级二')
    #1.通过类调用静态属性
    if hasattr(Student,'cls001'): #判断Student方法在中cls01是否存在
        print(getattr(Student,'cls001'))
    a = Student
    Student.cls002()
    

     

     

     

      

      

  • 相关阅读:
    最长公共子序列解题报告
    数列操作问题
    数字金字塔解题报告
    Formiko总结整数十进制转换二进制原理
    程序设计竞赛问题类型
    vue 的生命周期
    小程序 瀑布流布局(图-视频)
    JavaScript语言里判断一个整数是偶数还是奇数,并输出判断结果
    JavaScript语言里判断一个整数,属于哪个范围:大于0;小于0;等于0
    test
  • 原文地址:https://www.cnblogs.com/haowen980/p/8884812.html
Copyright © 2020-2023  润新知