1.isinstance, type, issubclass 的含义
isinstance:  判断你给对象时候是xxx类型的.(向上判断)
type: 返回xxx对象的数据类型
issubclass: 判断xxx类是否xxx的子类
class Animal:
    def eat(self):
        print("刚睡醒吃点儿东西")
 
class Cat(Animal):
    def play(self):
        print("猫喜欢玩儿")
 
c = Cat()
 
print(isinstance(c, Cat)) # c是一只猫
print(isinstance(c, Animal)) # 向上判断
 
a = Animal()
print(isinstance(a, Cat)) # 不能向下判断
 
print(type(a)) # 返回 a的数据类型
print(type([]))
print(type(c)) # 精准的告诉你这个对象的数据类型
 
# 判断.xx类是否是xxxx类的子类
print(issubclass(Cat, Animal))
print(issubclass(Animal, Cat))
def cul(a, b): # 此函数用来计算数字a和数字b的相加的结果
    # 判断传递进来的对象必须是数字. int float
    if (type(a) == int or type(a) == float) and (type(b) == int or type(b) == float):
        return a + b
    else:
        print("对不起. 您提供的数据无法进行计算")
 
print(cul(a, c))
2.如何区分方法和函数(代码)
  在类中:
         实例方法
               如果是类名.方法    == 是函数
               如果是对象.方法    == 是方法
from types import MethodType, FunctionType
3.反射(重要)
attr: attribute
getattr()
      从xxx对象中获取xxx属性
hasattr()
      判断xxx队形中是否有xxx属性
delattr()
      从xxx对象中删除xxx属性
setattr()
      设置xxx对象中xxx属性为xxxx值
class Person:
    def __init__(self, name, laopo):
        self.name = name
        self.laopo = laopo
 
 
p = Person("宝宝", "林志玲")
 
print(hasattr(p, "laopo")) #
print(getattr(p, "laopo")) # p.laopo
 
setattr(p, "laopo", "胡一菲") # p.laopo = 胡一菲
setattr(p, "money", 100000000000) # p.money = 100000000
 
print(p.laopo)
print(p.money)
 
delattr(p, "laopo") # 把对象中的xxx属性移除.  != p.laopo = None
print(p.laopo)
 

day 19 反射的更多相关文章

  1. Android开发网上的一些重要知识点[经验分享]

    1. android单实例运行方法 我们都知道Android平台没有任务管理器,而内部App维护者一个Activity history stack来实现窗口显示和销毁,对于常规从快捷方式运行来看都是s ...

  2. Android 程序员必须知道的 53 个知识点

    1. android 单实例运行方法 我们都知道 Android 平台没有任务管理器,而内部 App 维护者一个 Activity history stack 来实现窗口显示和销毁,对于常规从快捷方式 ...

  3. Java程序设计19——类的加载和反射-Part-A

    1 本文概要 本章介绍Java类的加载.连接和初始化的深入知识,并重点介绍Java反射相关的内容.本章知识偏底层点,这些运行原理有助于我们更好的把我java程序的运行.而且Java类加载器除了根加载器 ...

  4. Python【day 19】反射

    '''''' ''' 一.昨日内容回顾 1.依赖关系 1.弱关系.多态 1.松耦合 2.大象可以装冰箱,也可以装高压锅,就是多态 2.例子: 1.大象装冰箱 2.大象装高压锅 3.你打车 3.写法 大 ...

  5. 9.19.3 反射和Properties(重要)

    dbinfo.properties文件中的内容:     driver oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@192.168.1. ...

  6. 19.java反射入门

    一.反射机制是什么反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为jav ...

  7. python --- 19 判断对象所属,区分函数和对象, 反射

    一.判断对象所属 isinstance, type , issubclass 1.issubclass(x,y)    判断x是否是y 的子类 2.type(x)  精准返回x 的数据类型 3.isi ...

  8. Java程序设计19——类的加载和反射-Part-B

    接下来可以随意提供一个简单的主类,该主类无须编译就可使用上面的CompileClassLoader来运行它. package chapter18; public class Hello { publi ...

  9. [19/04/17-星期三] Java的动态性_反射(Reflection)机制

    一.前言 动态语言:程序运行时,可以改变程序结构或变量类型.典型的代表:Python,ruby,JavaScript 如JavaScript代码: function test(){ var s=&qu ...

随机推荐

  1. LeetCode总结 -- 一维动态规划篇

    这篇文章的主题是动态规划, 主要介绍LeetCode中一维动态规划的题目, 列表如下: Climbing StairsDecode WaysUnique Binary Search TreesMaxi ...

  2. IIS Post 大小超出允许的限制

    IIS限制默认POST的长度是4096 Byte 在IIS——配置编辑器——system.web/httpRuntime的maxRequestLength 或者在web.config文件中的syste ...

  3. SQL计算上下两行某列的差

    SELECT * FROM #TempHuDong SELECT * FROM #TempHuDong SELECT TOP 1 ABS(a.num -b.num) '差' FROM (select ...

  4. 【转】winrar命令行详解

    从命令行也可以运行 WinRAR 命令,常规的命令行语法描述如下: WinRAR  <命令> -<开关1> -<开关N> <压缩文件> <文件.. ...

  5. 查询组成员(group)

    查询组成员 $groupname = "groupname" $members = (get-adgroup $groupname -properties member).memb ...

  6. Oracle表空间和用户常用语句

    --删除空的表空间,但是不包含物理文件drop tablespace tablespace_name;--删除非空表空间,但是不包含物理文件drop tablespace tablespace_nam ...

  7. C#学习——入门简介

    # C#简介 #原版出处点击这里 C#是一个现代的.通用的.面向对象的编程语言,它是由微软(Microsoft)开发的,由Ecma和ISO核准认可的. C#是由Anders Heilsberg和他的团 ...

  8. su

    参数选项:-,-l,--login 切换用户的同时,将用户的家目录.系统环境变量等重新按切换后的用户初始化.-c 向shell传递单个命令,仅希望在某个用户下执行命令,而不用直接切换到该用户下来操作. ...

  9. tcp长连接分包方法

    tcp长连接分包的四种方法1.消息长度固定2.使用特殊的字符串作为消息边界.比如http协议的headers以“\r\n”为字段的分隔符3.在每条消息的头部加一个长度字段.这是最常见的4.利用消息本身 ...

  10. is和as在类型转换时的性能差异

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/xxdddail/article/details/36655219 is和as是.NET中经常使用的操 ...