zoukankan      html  css  js  c++  java
  • 反射 内置方法

       反射~~~

      反射  使用字符串数据类型的变量名来获取这个变量的值

    反射类中的变量: 静态属性  类方法   静态方法

    class Foo:
        school = 'qinghua'      #静态属性
        country = 'China'
        language = 'English'
    
        @classmethod             #类方法
        def class_method(cls):
            print(cls.school)
        @staticmethod            #静态方法
        def static_method():
            print('666666666')
        def wahaha(self):
            print('wahaha')
    A = Foo()
    A.wahaha()
    
    Foo.wahaha(1)
    A.class_method()
    Foo.class_method()
    
    Foo.wahaha()
    Foo.static_method()
    Foo.class_method()
    while 1:
        inpu = input('>>>')           # 直接类名+inpu的 输入一个 打印一个
        print(getattr(Foo,inpu))
    
    ##if inpu == 'school':print(Foo.school)    #如果输入的是school 就打印old_boy
    print(getattr(Foo, 'school'))             #反射 类名 + 字符串"静态属性名"
    
    Foo.class_method()
    getattr(Foo, 'class_method')()
    Foo.static_method()
    getattr(Foo,'static_method')()
    print(getattr(Foo, 'wahaha')(1)) #不推荐用类名去反射一个方法名
    print(hasattr(Foo, 'wahaha'))

    反射对象中的变量  对象属性   普通方法

    class Foo:
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
        def eat(self):
            print('%s is eat' % self.name)
    p1 = Foo('alexsb',30)
    print(getattr(p1, 'name'))
    print(getattr(p1, 'age'))
    getattr(p1,'eat')()

    alexsb
    30
    alexsb is eat

    普通的给文件名 变更  和getattr方法

    import os
    os.rename('English','English777')
    getattr(os,'rename')('English777','china')

    本文件反射

      import sys

      getattr(sys.modules[name],'所有定义在这个文件中的名字')

       setattr 给命名空间的某一个名字设置一个值

        delattr   删除某一个命名空间中变量对应的值

    内置方法 

      不用特别去调用这个方法就可以触发这个方法的执行

    class Foo:
        def __str__(self):
            return 'abcd'
        def __repr__(self):
            return 'dcba'
    obj = Foo()

    __str__ :

        print(obj)  打印触发

        ‘%s’ % obj   格式化输出触发

        str()  强转触发

    __repr__:

        '%r' % obj

        repr(obj)

  • 相关阅读:
    JAVA AES加密算法实现代码
    JAVA BASE64 加密解密实现代码
    eclipseLuna (4.4.0) 安装velocity 插件
    NIO中的Buffer
    Oracle死锁处理
    DWR、Comet4j在Nginx+Tomcat组合下的优化
    网站已运行时间代码
    常用DB2命令
    DB2分页查询简单示例
    comet4j推送 405/500 JSON转换异常
  • 原文地址:https://www.cnblogs.com/single82/p/9580418.html
Copyright © 2011-2022 走看看