python note 24 反射

该博客主要介绍了Python中issubclass、type、isinstance的用法,还提及查看方法和函数以及反射的应用,内容转载自相关博客。

1、issubclass用法

class Base(object):
    pass

class Foo(Base):
    pass

class Bar(Foo):
    pass

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

2、type用法

class Foo(object):
    pass

obj = Foo()
print(obj,type(obj)) #获取当前对象是由那个类创建。

3、isinstance用法

class Base(object):
    pass

class Foo(Base):
    pass
obj = Foo()
print(isinstance(obj,Base)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。

4、查看方法和函数

from types import MethodType,FunctionType
def check(arg):
    """
    检查arg是方法还是函数?
    :param arg:
    :return:
    """
    if isinstance(arg,MethodType):
        print('arg是一个方法')
    elif isinstance(arg,FunctionType):
        print('arg是一个函数')
    else:
        print('不知道是什么')

5、反射

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

应用

class Account(object):

    def login(self):
        print("登录")

    def logout(self):
        print("登出")

    def register(self):
        print("注册")

    def run(self):
        choice_list = ["login","logout","register"]
        print('''
            输入要执行的功能
                1、登录
                2、登出
                3、注册
        ''')
        choice = int(input("输入选择的序号 : "))
        fun_name = choice_list[choice - 1]
        func = getattr(self,fun_name)
        func()

obj = Account()
obj.run()

 

转载于:https://www.cnblogs.com/P-Z-W/p/11063358.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值