博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python面向对象(反射)(四)
阅读量:5829 次
发布时间:2019-06-18

本文共 1693 字,大约阅读时间需要 5 分钟。

1. isinstance, type, issubclass

    isinstance: 判断你给对象是否是xx类型的. (向上判断

    type: 返回xxx对象的数据类型

    issubclass: 判断xxx类是否xxx的子类

class Animal:    def eat(self):        print("刚睡醒吃点儿东西")class Cat(Animal):    def play(self):        print("猫喜欢玩儿")c = Cat()print(isinstance(c, Cat)) # Trueprint(isinstance(c, Animal)) # Truea = Animal()print(isinstance(a, Cat)) # 不能向下判断  Falseprint(type(a)) # 返回 a的数据类型print(type(c)) # 精准的告诉你这个对象的数据类型# 判断.xx类是否是xxxx类的子类print(issubclass(Cat, Animal))  # Trueprint(issubclass(Animal, Cat))  # False

 

2. 如何区分方法和函数

    在类中:

        实例方法

            如果是类名.方法  函数

            如果是对象.方法  方法

        类方法: 都是方法

        静态方法: 都是函数

    from types import MethodType, FunctionType

    isinstance()

from types import FunctionType, MethodType  #  引入方法和函数的模块class Person:    def chi(self): # 实例方法        print("我要吃鱼")    @classmethod    def he(cls):        print("我是类方法")    @staticmethod    def pi():        print("你是真滴皮")p = Person()print(isinstance(Person.chi, FunctionType)) # Trueprint(isinstance(p.chi, MethodType)) # Trueprint(isinstance(p.he, MethodType)) # Trueprint(isinstance(Person.he, MethodType)) # Trueprint(isinstance(p.pi, FunctionType)) # Trueprint(isinstance(Person.pi, FunctionType)) # True

 

3. 反射

    一共就4个函数

    attr: attribute

    getattr()

        从xxx对象中获取到xxx属性值

    hasattr()

        判断xxx对象中是否有xxx属性值

    delattr()

        从xxx对象中删除xxx属性

    setattr()

        设置xxx对象中的xxx属性为xxxx值

 

class Person:    def __init__(self, name,wife):        self.name = name        self.wife = wifep = Person("宝宝", "林志玲")print(hasattr(p, "wife")) print(getattr(p, "wife")) # p.wifesetattr(p, "wife", "胡一菲") # p.wife = 胡一菲setattr(p, "money", 100000) # p.money = 100000print(p.wife)print(p.money)delattr(p, "wife") # 把对象中的xxx属性移除. 并不是p.wife = Noneprint(p.wife)

 

转载于:https://www.cnblogs.com/fu-1111/p/10151759.html

你可能感兴趣的文章
Hot Bath
查看>>
国内常用NTP服务器地址及
查看>>
Java annotation 自定义注释@interface的用法
查看>>
Apache Spark 章节1
查看>>
phpcms与discuz的ucenter整合
查看>>
Linux crontab定时执行任务
查看>>
mysql root密码重置
查看>>
33蛇形填数
查看>>
选择排序
查看>>
SQL Server 数据库的数据和日志空间信息
查看>>
前端基础之JavaScript
查看>>
自己动手做个智能小车(6)
查看>>
自己遇到的,曾未知道的知识点
查看>>
P1382 楼房 set用法小结
查看>>
分类器性能度量
查看>>
windows 环境下切换 python2 与 pythone3 以及常用命令
查看>>
docker 基础
查看>>
解决灾难恢复后域共享目录SYSVOL与NELOGON共享丢失
查看>>
Lync 客户端单独安装激活步骤
查看>>
eclipse集成weblogic开发环境的搭建
查看>>