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

    1. isinstance/issubclass/type

    1.1. 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)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
    isinstance
    1.2. issubclass  检查第一个参数是否是第二个参数的 子子孙孙类
    class Base(object):
        pass
    
    class Foo(Base):
        pass
    
    class Bar(Foo):
        pass
    
    print(issubclass(Bar,Base)) # 检查第一个参数是否是第二个参数的 子子孙孙类
    issubclass
    1.3. type 获取当前对象是由那个类创建
    class Foo(object):
        pass
    
    obj = Foo()
    
    print(obj,type(obj))    # 获取当前对象是由那个类创建。
    if type(obj) == Foo:
        print('obj是Foo类型')
    else:
        print('obj不是Foo类型')
    type

    2. 方法和函数

    2.1.如何判断是方法还是函数:MethodType, FunctionType
    from types import MethodType, FunctionType
    # 先引入模块
    
    def chenk(args):
        if isinstance(args, MethodType):
            print('是方法')
        elif isinstance(args, FunctionType):
            print('是函数')
    
    chenk(xxx) 

    想要看谁是方法还是函数就把谁传入到函数里,再判断

    2.2. callable()判断什么就把什么括起来  返回True就可以被调用,反之false就不可被调用

    3. 反射

    getattr   根据字符串的形式,去对象中找成员。(根据第二个参数(字符串)去第一个参数(对象,类或模块)中寻找与之同名的成员)
    hasattr 根据字符串的形式,去判断对象中是否有成员。(判断第一个参数(对象,类或模块)中是否有第二个参数(字符串)这个成员)
    setattr 根据字符串的形式,动态的设置一个成员(内存)
    delattr 根据字符串的形式,动态的删除一个成员(内存)
    class Foo():
        def __init__(self,name):
            self.name = name
    
        def func(self):
            print('我是%s,长得帅'% self.name)
    
    obj = Foo('侯明巍')
    setattr(obj,'age',26)  # 动态的给对象设置一个变量(改变变量的值)
    # 实际开发中慎用setattr,能不用就不用
    print(getattr(obj,'age'))
    
    
    # print(obj.name)
    # delattr(obj,'name')   # 删除对象中的变量
    # print(obj.name)
    
    val = input('请输入要执行的动作:')
    if hasattr(obj,val):
        func = getattr(obj,val)
        func()
    小示例练习





  • 相关阅读:
    C# Apache Thrift Demo
    C#指针使用demo
    C#中指针使用总结
    fastjson之JSONObject、JSONArray
    fastjson使用
    ObjectMapper使用
    ObjectMapper将json转对象报错处理
    rabbitmq-channel方法介绍
    rabbitmq不同模式的交换机使用
    activemq总结
  • 原文地址:https://www.cnblogs.com/hmw112626/p/9651057.html
Copyright © 2011-2022 走看看