洗礼灵魂,修炼python(36)--面向对象编程(6)—类的相关内置函数issubclass,hasattr等
啥?我靠,类也有内置函数?哈哈,确实有的。有哪些呢?请往下看
issubclass(cls, class_or_tuple, /)
1.基本属性:
方法全是特殊方法
2.使用方法:判断一个类是否由另一个类派生(继承)
先说说里面的参数,第一个cls即是class,类的意思。第二个class_or_tuple是类或者元组(下同)
当第一个参数类是第二个参数类的子类,那么就返回True,属于非严格性道德检测:
- 1)一个类被认为是其自身的子类
- 2)class_or_tuple可以是类对象组成的元组,只要cls是元组的其中任何一个候选类,则返回True
3.例:
最后一个和object对象和定义的Human类做检测是返回真,这也说明前面提到的所有的参数都继承与object对象
isinstance(obj, class_or_tuple, /)
1.基本属性:(略过,自行使用help和dir查看,下同)
2.使用方法:检测一个对象是否是给定类的实例对象
哈哈,这个BIF没想到吧?用法和type函数一样的,它居然也是类的BIF的,是的,其实比如字符串,整形这些类型它们也继承与str和int类,所以isinstance可以做出和type函数一样的判断。好的,用法都清楚,它就是用来检测实例对象是否属于类的。不过需要注意的是:
- 1)如果第一个参数obj不是对象,则永远返回False
- 2)如果第二个参数class_or_tuple不是类或者由类对象组成的元组,会抛出一个TypeError异常
3.由于用法都清楚了,所以不再举例。不过要注意的是这种情况:
看懂了吗?c是C类对象的实例化对象,C继承自A,但是不继承B,所以返回假,但是你说,C继承A,所以c和A为真,而B和c都是继承于object对象,你说那么c和B也为真啊。这种想法是错的,要注意了。(如果没有这种想法的直接略过,别搞混了)
super([type,obj | type2])
1.基本属性:(略过)
2.使用方法:在子类找出其父类以便于调用其属性
参数是可选的。前面在继承的博文中也提到了怎么使用了。要注意的是:
一般情况下仅能采用非绑定方式调用基类方法,而super()可用于传入实例或类型对象
比如:super(Human,self)(也就是前面解析super函数的第二种写法)
3.例:(略过,直接看前面的[继承]的博文就行)
hasattr(obj, name, /)
1.基本属性:(略过)
2.使用方法:测试对象里是否有指定的属性
第一个参数掠过,第二个参数“name”需要用引号(不然报错),字符串标志
3.例:
getattr(object, name[, default])
1.基本属性:(略过)
2.使用方法:获得给定类的属性的值
第一个参数不用说,第二个参数也是类的属性,需要引号,第三个参数可选,可以随意设定,当第二个参数并不是其类的属性时,返回设定的第三个参数
3.例:
setattr(obj, name, value, /)
1.基本属性:(略过)
2.使用方法:设置给定类的属性的值
第一个参数略过,第二个参数同样的是属性名,需要引号,第三个参数是要设置的属性的值
3.例:
delattr(obj, name, /)
1.基本属性:(略过)
2.使用方法:与seattr相反,删除给定类的属性(连值一起删除)
3.例:
报错信息是指A对象没有‘x’属性
property(fget=None, fset=None, fdel=None, doc=None)
1.基本属性:(略过)
2.使用方法:通过属性设置属性
第一个fget是获取属性的方法,第二个fget是设置属性的方法,第三个fdel是删除属性的方法,第四个doc是文档(很少用)
其实你可以理解就是通过property设定规则,当获取值,设定值,删除值都会直接作用与这个类对象把其事先设定的属性改变
3.例:
报错提示A类对象不存在属性‘x’。
property的用法后面还会出现。敬请期待
洗礼灵魂,修炼python(36)--面向对象编程(6)—类的相关内置函数issubclass,hasattr等的更多相关文章
- Day 21 python :面向对象 类的相关内置函数 /单例模式 /描述符
1.isinstance(obj,cls) 检查obj是否是类cls的对象: 备注:用isinstance 的时候,产生实例后,会显示实例既是父类的实例,也是子类的实例 class Mom: gend ...
- Day07:常用模块,面向对象编程(对象&类)及内置函数
今日内容:1.常用模块2.面向对象编程(*****) 介绍面向对象编程 类 对象3.内置函数------------------------------1.面向过程编程 核心“ ...
- python 类(object)的内置函数
python 类(object)的内置函数 # python 类(object)的内置函数 ### 首先 #### 以__双下划线开头的内置函数 __ #### __往往会在某些时候被自动调用,例如之 ...
- Python【map、reduce、filter】内置函数使用说明(转载)
转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...
- Python【map、reduce、filter】内置函数使用说明
题记 介绍下Python 中 map,reduce,和filter 内置函数的方法 一:map map(...) map(function, sequence[, sequence, ...]) -& ...
- python面向对象的基础语法(dir内置函数、self参数、初始化方法、内置方法和属性)
面相对象基础语法 目标 dir 内置函数 定义简单的类(只包含方法) 方法中的 self 参数 初始化方法 内置方法和属性 01. dir 内置函数(知道) 在 Python 中 对象几乎是无所不在的 ...
- python面向对象的多态-类相关内置函数-类内置魔法函数-迭代器协议-上下文管理-04
多态 一种事物具备不同的形态 例如:水 --> 固态.液态.气态 多态:# 多个不同对象可以相应同一个对象,产生不同的结果 首先强调,多态不是一种特殊的语法,而是一种状态,特性(多个不同对象可以 ...
- day16_函数作用域_匿名函数_函数式编程_map_reduce_filter_(部分)内置函数
20180729 补充部分代码 20180727 上传代码 #!/usr/bin/env python # -*- coding:utf-8 -*- # ***************** ...
- 面向对象 反射 和item系列和内置函数和__getattr__和__setattr__
反射 反射主要用在网络编程中, python面向对象的反射:通过字符串的形式操作对象相关的属性.python的一切事物都是对象. 反射就是通过字符串的形式,导入模块:通过字符串的形式,去模块寻找指定函 ...
随机推荐
- 使用pyenv来管理python版本
使用pyenv可以很方便的切换python版本,而不会影响系统的python版本,对需要使用supervisor(仅支持python2)托管程序,项目使用python3开发的情况十分有用 pyenv的 ...
- MongoDB索引管理-索引的创建、查看、删除
索引是提高查询查询效率最有效的手段.索引是一种特殊的数据结构,索引以易于遍历的形式存储了数据的部分内容(如:一个特定的字段或一组字段值),索引会按一定规则对存储值进行排序,而且索引的存储位置在内存中, ...
- 002. Asp.Net Routing与MVC 之(基础知识):HttpModule 与 HttpHandler
本文By 杨工. 一. Http.sys http.sys 从Win2003和WinXP SP2开始,就成为windows操作系统内核驱动程序,能够让任何应用程序通过它提供的接口,以http协议进行信 ...
- (原创)UML要点总结
今天我们总结要点: 我们就从这张图慢慢讲. 一.类图部分 基础: 类图→长方形表示.类名在最上栏,下面是数据,第三栏是方法.其存在两种关系:关联和泛化 属性: 全形: 可见性 名:类型 重 ...
- 从零开始学 Web 之 Ajax(七)跨域
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- Python 虚拟环境 | Mac/Linux下如何避坑安装配置Virtualenv
1.为什么要使用虚拟环境 在Python中,不同的应用可能需要用到不同版本的第三方包,而这些第三方包被统一存放到目录site-packages中,不同版本的包容易相互覆盖,如安装Django 2.1时 ...
- C#7.0--引用返回值和引用局部变量
一.在C#7.0以上版本中,方法的返回值可以通过关键字ref指定为返回变量的引用(而不是值)给调用方,这称为引用返回值(Reference Return Value,或ref returns): 1. ...
- eosio.cdt:EOS智能合约工具集
目前EOS已经迎来了1.5.x时代,很多内容都有了较大的改变.其中智能合约的工作流程发生了改变,EOSIO为智能合约提供了独立且功能完整的工具集eosio.cdt.该工具集基于WASM平台,可解耦于e ...
- [JZOJ5837] Omeed
Description Solution 有两种做法 一种是线段树维护一次方程系数,一种是线段树维护矩阵 准备都写一写 维护系数 首先把式子推出来 \[CS=B\times \sum\limits_{ ...
- SpringBoot入门之集成Druid
Druid:为监控而生的数据库连接池.这篇先了解下它的简单使用,下篇尝试用它做多数据源配置.主要参考:https://github.com/alibaba/druid/wiki/常见问题 https: ...