反射(重点)

1. isinstance, type, issubclass
  isinstance: 判断你给对象是否是xx类型的. (向上判断)
  type: 返回xxx对象的数据类型
  issubclass: 判断xxx类是否xxx的子类

2. 如何区分方法和函数(代码)
  在类中:
  实例方法
    如果是   类名.方法      是函数
    如果是   对象.方法      是方法


  类方法:

    都是方法


  静态方法:

     都是函数

 

  from types import MethodType, FunctionType
  isinstance()


3. 反射(重要)
  一共就4个函数
  attr: attribute

  getattr()     (重要)
    从xxx对象中获取到xxx属性值
  hasattr()     (重要)
    判断xxx对象中是否有xxx属性值

  这个代码实在是非常的重要

class Person:
    @classmethod
    def chi(cls):
        print("你也太能吃了吧")
    @classmethod
    def he(cls):
        print("你也太能喝了吧")
while 1 :
    a = input("请输入你要查找的功能:")
    if hasattr(Person,a):
        x = getattr(Person,a)  #用 getattr 拿类中的类方法时,得到的x 相当于创建了Person对象且拿到了方法.
        print(x)                 # 打印就能看到 x 是得到方法  几乎等同于 x = Person.a
        x()                      # x() 就相当于 x() =  Person.a()
        print("有这个功能")
    else :
        print("没有这个功能")

  


  delattr()
    从xxx对象中删除xxx属性
  setattr()
    设置xxx对象中的xxx属性为xxxx值

posted on 2018-12-20 17:43  哎呀!土豆  阅读(78)  评论(0编辑  收藏  举报

导航