• python 面向对象(其他相关)


    python 面向对象(其他相关):

     (思维导图    ↑↑↑↑↑↑)

    一.issubclass(obj,cls)

    检查obj是否是类cls的对象

    class Base(object):
        pass
    
    class Foo(Base):
        pass
    
    class Bar(Foo):
        pass
    
    print(issubclass(Bar,Base)) # 检查第一个参数是否是第二个参数的 子子孙孙类

    二.type

    获取当前对象是由哪个类创建

    class Foo(object):
        pass
    
    obj = Foo()
    
    print(obj,type(obj)) # 获取当前对象是由那个类创建。
    if type(obj) == Foo:
        print('obj是Foo类型')

    三.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)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。

    四.反射

    python中的反射功能是由以下四个内置函数提供: 

      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"
    
        # 错误
        # handler.val()
        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中不存在输入的属性名')
    
    
    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()
    
    
    
     
  • 相关阅读:
    Oracle时间日期操作
    c# 语音卡控制语音卡实现电话录音
    ORACLE日期时间函数大全
    oracle的表分区
    如何应付表数据过大的查询问题?(如何尽量避免大表关联)[转]
    优化SQL Server数据库
    oracle知识回顾
    增强现实 artoolkit
    高负载系统架构设计
    三套.net支持库
  • 原文地址:https://www.cnblogs.com/zbw582922417/p/9560806.html
Copyright © 2020-2023  润新知