反射 内置方法

Posted single82

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反射 内置方法相关的知识,希望对你有一定的参考价值。

   反射~~~

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

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

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)





以上是关于反射 内置方法的主要内容,如果未能解决你的问题,请参考以下文章

反射 内置方法

python面对对象(反射,内置方法)

面向对象的进阶---反射--一些内置方法

python基础27——反射&内置方法

反射(高大上)类的内置方法

issubclass和isinstance,反射,内置方法