zoukankan      html  css  js  c++  java
  • 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")()
  • 相关阅读:
    【题解】LOJ #6488 数表【FWT】
    【题解】[Comet OJ Contest #11 F] arewell【子集卷积】
    【CF757F】 Team Rocket Rises Again 【支配树】
    支配树学习笔记
    JS模拟实现题目(new debounce throwee 等)
    React生命周期
    js转义符
    CSS3中的transform转换属性
    animation动画
    flex
  • 原文地址:https://www.cnblogs.com/lirunsheng/p/10847850.html
Copyright © 2011-2022 走看看