zoukankan      html  css  js  c++  java
  • 面向对象04

    反射

     

    # # isinstance,检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
    # class Base(object):
    #     pass
    #
    # class Foo(Base):
    #     pass
    #
    # obj1 = Foo()
    # print(isinstance(obj1, Foo))  # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
    # print(isinstance(obj1, Base))  # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
    # obj2 = Base()
    # print(isinstance(obj2,Foo))  # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
    # print(isinstance(obj2,Base)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
    
    
    
    # type:# 获取当前对象是由那个类创建。
    # class Foo(object):
    #     pass
    #
    # obj = Foo()
    #
    # print(obj,type(obj)) # 获取当前对象是由那个类创建。
    # if type(obj) == Foo:
    #  print('obj是Foo类型')
    
    
    
    # issubclass:检查第一个参数是否是第二个参数的 子子孙孙类
    # class Base(object):
    #     pass
    #
    # class Foo(Base):
    #     pass
    #
    # class Bar(Foo):
    #     pass
    #
    # print(issubclass(Bar,Base)) # 检查第一个参数是否是第二个参数的 子子孙孙类

     

     

     

    # getattr # 根据字符串的形式,去对象中找成员。
    # hasattr # 根据字符串的形式,去判断对象中是否有成员。
    # setattr # 根据字符串的形式,动态的设置一个成员(内存)
    # delattr # 根据字符串的形式,动态的删除一个成员(内存)

     

    例子

    # from types import FunctionType #调用
    # import handler                 #引用自己创建的模块
    #
    # while True:
    #     print("""
    #     系统支持的函数有:
    #         1. f1
    #         2. f2
    #         3. f3
    #         4. f4
    #         5. f5
    #     """)
    #     val = input("请输入要执行的函数:") # val = "f1"
    #
    #
    #
    #     if hasattr(handler,val):
    #         func_or_val = getattr(handler,val)     # 根据字符串为参数,去模块中寻找与之同名的成员。
    #         if isinstance(func_or_val,FunctionType):
    #             func_or_val()
    #         else:
    #             print(func_or_val)
    #     else:
    #         print('handler中不存在输入的属性名')
    
                    # # 正确方式
                    # """
                    # if val == 'f1':
                    #     handler.f1()
                    # elif val == 'f2':
                    #     handler.f2()
                    # elif val == 'f3':
                    #     handler.f3()
                    # elif val == 'f4':
                    #     handler.f4()
                    # elif val == 'f5':
                    #     handler.f5()

    # class Account(object):
    #     func_list = ['login', 'logout', 'register']
    #
    #     def login(self):
    #         """
    #         登录
    #         :return:
    #         """
    #         print('登录111')
    #
    #     def logout(self):
    #         """
    #         注销
    #         :return:
    #         """
    #         print('注销111')
    #
    #     def register(self):
    #         """
    #         注册
    #         :return:
    #         """
    #         print('注册111')
    #
    #     def run(self):
    #         """
    #         主代码
    #         :return:
    #         """
    #         print("""
    #             请输入要执行的功能:
    #                 1. 登录
    #                 2. 注销
    #                 3. 注册
    #         """)
    #
    #         choice = int(input('请输入要执行的序号:'))
    #         func_name = Account.func_list[choice - 1]
    #
    #         # func = getattr(Account,func_name) # Account.login
    #         # func(self)
    #
    #         func = getattr(self, func_name)  # self.login
    #         func()
    #
    #
    # obj1 = Account()
    # obj1.run()
    #
    # obj2 = Account()
    # obj2.run()

     

     

  • 相关阅读:
    circle loss:统一softmax CrossEntropy loss 和 triplet loss / 2020
    针对PPO的一些Code-level性能优化技巧
    【李南江】从零玩转TypeScript
    Python编程题16--最长不重复子串
    Python编程题15--RGB字符串排序
    Maven教程
    python的pandas处理txt文件
    python将JPG图片转换为PDF
    使用svd对信号矩阵降噪
    使用ffmpeg命令处理媒体文件
  • 原文地址:https://www.cnblogs.com/woshiliuwenbo/p/9562243.html
Copyright © 2011-2022 走看看