Python学习之旅(十八)
2024-10-15 08:09:48
Python基础知识(17):面向对象编程(Ⅱ)
获取对象信息
在不知道对象信息的情况下,我们想要去获取对象信息,可以使用以下方法
1、type
(1)判断对象类型
>>> type(123)
<class 'int'>
>>> type("name")
<class 'str'>
>>> type(None)
<class 'NoneType'>
>>> type(abs)
<class 'builtin_function_or_method'>
>>> import Person
>>> type(Person)
<class 'module'>
(2)比较两个对象是否是同一个类型
>>> type(123)==type(456)
True
>>> type(123)==int
True
2、isinstance
(1)判断一个对象是否是该类型本身或位于该类型的父类继承链
#play.py
class Animals(object):
def play():
pass class Dog(Animals):
def play():
pass class Kity(Dog):
def play():
pass a=Animals()
d=Dog()
k=Kity()
>>> import play
>>> isinstance(k,Kity)
True
>>> isinstance(k,Dog)
True
>>> isinstance(k,Animals)
True
>>> isinstance(k,object)
True
>>> isinstance(d,Kity)
False
(2)判断一个变量是否是某些类型中的其中一种
>>> isinstance(123,(str,int))
True
3、dir
获得一个对象的所有属性和方法
>>> dir("Alice")
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
测试对象属性
hasattr:有没有该属性
setattr:设置该属性
getattr:获取该属性
>>> class Cal(object):
x=2
def cal():
self.y=1
return x+y >>> ca=Cal()
>>> hasattr(ca,"x")
True
>>> setattr(ca,"z",3)
>>> getattr(ca,"z")
3
>>> getattr(ca,"p")
如果试图获取某个不存在的属性会报错
可以传入一个default参数,如果想获取的属性不存在,就返回默认值
>>> getattr(ca,"p")
Traceback (most recent call last):
File "<pyshell#57>", line 1, in <module>
getattr(ca,"p")
AttributeError: 'Cal' object has no attribute 'p'
>>> getattr(ca,"p",404)
404
实例属性和类属性
1、实例属性属于各个实例所有,互不干扰
通过实例变量给实例绑定属性
2、类属性属于类所有,所有实例都可以使用
3、当实例属性和类属性名字相同时,类属性将会被屏蔽
最新文章
- AnimationsDemo中的ZoomActivity代码分析
- JS识别ios &; 安卓
- phpcms从表v9_news_data中字段content中用正则取出图片的地址输出
- (C#) 基本概念一览表
- C语言深度剖析学习错误点记录
- ios开发错误笔记
- ISO9001、ISO14001、OHSAS18000什么意思
- 聊聊js运算符 ‘与(&;&;)’和‘ 或(||)’
- android dom方式创建xml
- discuz二次开发笔记(三)------discuz的安装步骤
- JQuery EasyUI combobox动态添加option
- 8.多线程和Socket通信
- 【模板】最近公共祖先(LCA)
- No space left on device Linux系统磁盘空间已满
- 离线安装expect
- 如何打包/运行jar包,及生成exe文件
- CentOS7局域网下安装离线Ambari
- 构建-0 Gradle DSL 属性和方法【API】
- Task 6.2站立会议一
- ElasticSearch安装和head插件安装
热门文章
- debian linux sudo 无法执行以添加普通用户到sudo
- typescript 与 js 开发 react 的区别
- MATLAB 程序计算结果出现 复数(a+bi)问题
- Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -
- 一个会学习(观察->;活学->;求变)的人,在任何领域都能变得强大无比
- 单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境
- golang 类型转换
- 免费ss账号网站
- jQuery(三) javascript跨域问题(JSONP解决)
- [k8s]Docker 用户使用 kubectl 命令指南-unkown排错(kubelet端口解析)