码迷,mamicode.com
首页 > 其他好文 > 详细

反射 内置方法

时间:2018-09-03 19:57:36      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:lex   elf   delattr   打印   asa   反射   attr   使用字符串   att   

   反射~~~

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

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

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)

反射 内置方法

标签:lex   elf   delattr   打印   asa   反射   attr   使用字符串   att   

原文地址:https://www.cnblogs.com/single82/p/9580418.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!