python反射

什么是反射?

用字符串数据类型的变量名来访问这个变量的值
 
反射的方法 getattr hasattr setattr delattr
 
类、对象、模块都可以使用反射
 
# 类 静态属性 类方法 静态方法
class Student:
    ROLE = "STUDENT"


    @classmethod
    def check_course(cls):
        print("查看课程")


    @staticmethod
    def login():
        print("登录")


# 反射查看属性
print(getattr(Student, "ROLE"))


# 反射调用类方法
getattr(Student, "check_course")()




# 反射调用静态方法
getattr(Student, "login")()


# 这个方法防止用户瞎鸡儿输入


# 下面这个方法最安全
num = input(">>>")


if hasattr(Student, num):
    getattr(Student, num)()

对象

# 对象
# 方法 对象属性


class A():
    def __init__(self, name):
        self.name = name


    def func(self):
        print("in func")


a = A('sam')
print(a.name)
print(getattr(a, "name"))
getattr(a, "func")()

模块

# 模块
import os
import sys
os.rename("__init__.py", "init")
getattr(os, "rename")("init", "__init__.py")


print(os.rename)
print(getattr(os, 'rename'))






# 反射自己模块
def sam():
    print("sam")


def jack():
    print("jack")


my_file = sys.modules["__main__"]


getattr(my_file, "sam")()
getattr(my_file, "jack")()
原文地址:https://www.cnblogs.com/lirunsheng/p/10847850.html