zoukankan      html  css  js  c++  java
  • Python之路——反射

     1 # import time
     2 # print(time.strftime('%Y-%m-%d %H:%M:%S'))
     3 # print(getattr(time,'strftime')('%Y-%m-%d %H:%M:%S'))
     4 
     5 # isinstance    issubclass
     6 # class A:pass
     7 # class B(A):pass
     8 # a = A()
     9 # print(isinstance(a,A))  # True
    10 # print(issubclass(B,A))  # True
    11 # print(issubclass(A,B))  # False
    12 
    13 
    14 # name = 1
    15 # eval('print(name)') # 有安全隐患
    16 # 用反射就没有安全问题
    17 # 反射:用字符串类型的名字去操作变量
    18 # 反射对象中的属性和方法   # hasattr getattr setattr delattr
    19 # class A:
    20 #     def func(self):
    21 #         print('in func')
    22 #     def get_name(self):
    23 #         return self.name
    24 # def func2():
    25 #     print('in func2')
    26 #
    27 # def func3(self):
    28 #     print('in func3')
    29 # a = A()
    30 # a.name = 'Alex'
    31 # a.age = 63
    32 # if hasattr(a,'name'):
    33 #     ret = getattr(a,'name')
    34 #     print(ret)
    35 # setattr(a,'func2',func2)    # 将方法绑定到对象上,只有该对象可以调用此方法,对象的类以及其他对象不能调用此方法
    36 # a.func2()  #将方法绑定到对象的属性上,外部定义的函数可以没有self参数
    37 # setattr(A,'func3',func3)    # 将外部函数绑定到类的属性上,外部函数的定义需带self参数
    38 # b = A()
    39 # b.func3()   # 对象调用时,正常调用即可
    40 #
    41 # delattr(A,'get_name')
    42 # a.func()
    43 
    44 # class A:
    45 #     price = 20
    46 #     @classmethod
    47 #     def func(cls):
    48 #         print('in func')
    49 # print(getattr(A,'price'))   # 反射类的属性
    50 # print(getattr(A,'func')())  # 反射类的方法
    51 
    52 # 模块
    53 # import my
    54 # print(my.day)
    55 # print(getattr(my,'day'))
    56 # getattr(my,'wahaha')()
    57 
    58 
    59 # 内置模块
    60 # import time
    61 # print(getattr(time,'time')())
    62 # print(getattr(time,'asctime')())
    63 # print(time.strftime('%Y-%m-%d %H:%M:S'))
    64 # print(getattr(time,'strftime')('%Y-%m-%d %H:%M:S'))
    65 
    66 # def qqxing():
    67 #     print('qqxing')
    68 # year = 2018
    69 # import sys
    70 # print(sys.modules['__main__'].year)
    71 # print(getattr(sys.modules['__main__'],'year'))  # 反射自己模块中的变量
    72 # print(getattr(sys.modules['__main__'],'qqxing')())  # 反射自己模块中的函数
    73 #
    74 # import my
    75 # print(getattr(my,'C'))  # 反射一个模块中的类
  • 相关阅读:
    农夫带着狼、羊和一棵白菜过河
    C#实现L型棋牌覆盖
    数据库存储管理
    4个人打算过桥,它们都在桥的某一端,.我们有17分钟让他们全部到达大桥的另一头?
    C# 创建Public无参构造函数的快捷键
    控制文件管理
    配置数据库
    C#实现线性查找(递归,非递归)
    C#实现选择排序
    C#4.0参数默认值
  • 原文地址:https://www.cnblogs.com/liuyankui163/p/8329509.html
Copyright © 2011-2022 走看看