Python基础(获取对象信息)
import types
print(type('abc') == str)#True
print(type(123) == int)#True def f1():
pass
print(type(f1) == types.FunctionType)#True
print(type(abs) == types.BuiltinFunctionType)#True
print(type(lambda x:x) == types.LambdaType)#True
print(type(x for x in range(0,11)) == types.GeneratorType)#True #isinstance()判断的是一个对象是否是该类型本身,或者位于该类型的父继承链上,总是优先使用isinstance()判断类型,可以将指定类型及其子类“一网打尽”
print(isinstance(b'b',bytes))#True
print(isinstance([1,2,3],(list,tuple)))#True 一个变量是否是某些类型中的一种 #获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list
print(dir('abc'))#['__add__', '__class__',..., '__subclasshook__', 'capitalize', 'casefold',..., 'zfill'] #配合getattr()、setattr()以及hasattr(),我们可以直接操作一个对象的状态
class F1(object):
def __init__(self,num):
self.__num__ = num def get_num(self):
return self.__num__
f1 = F1(300)
print(hasattr(f1,'__num__'))#True
setattr(f1,'x',200)#设置一个属性'x'
print(getattr(f1,'x'))#200
print(getattr(f1,'get_num'))#<bound method F1.get_num of <__main__.F1 object at 0x000001C2A4B00358>> 可以获得对象的方法
#print(F1.x)#x只是添加到了实例f1的属性里,没有添加在F1的属性里 #定义了一个类属性后,这个属性虽然归类所有,但类的所有实例都可以访问到
class Student(object):
name = 'Student' s = Student() # 创建实例s
print(s.name) #Student 打印name属性,因为实例并没有name属性,所以会继续查找class的name属性
print(Student.name) # Student打印类的name属性
s.name = 'Michael' # 给实例绑定name属性
print(s.name) #Michael 由于实例属性优先级比类属性高,因此,它会屏蔽掉类的name属性
print(Student.name) #Student 但是类属性并未消失,用Student.name仍然可以访问
del s.name # 如果删除实例的name属性
print(s.name) #Student 再次调用s.name,由于实例的name属性没有找到,类的name属性就显示出来了
#不要对实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性
Python基础(获取对象信息)的更多相关文章
- python基础——获取对象信息
python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...
- Python面向对象-获取对象信息type()、isinstance()、dir()
type() type()函数用于判断对象类型: >>> type(11) <class 'int'> >>> type('abc') <clas ...
- 【Python】[面性对象编程] 获取对象信息,实例属性和类属性
获取对象信息1.使用isinstance()判断class类型2.dir() 返回一个对象的所有属性和方法3.如果试图获取不存在的对象会抛出异常[AttributeError]4.正确利用对象内置函数 ...
- python 获取对象信息
当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> ...
- Python面向对象 -- 继承和多态、获取对象信息、实例属性和类属性
继承和多态 继承的好处: 1,子类可以使用父类的全部功能 2,多态:当子类和父类都存在相同的方法时,子类的方法会覆盖父类的方法,即调用时会调用子类的方法.这就是继承的另一个好处:多态. 多态: 调用方 ...
- python类的继承和多态,获取对象信息
继承 类的继承机制使得子类可以继承父类中定义的方法,拥有父类的财产,比如有一个Animal的类作为父类,它有一个eat方法: class Animal(object): def __init__(se ...
- python 面向对象编程、获取对象信息
面向对象与面向过程 参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0 ...
- python获取对象信息
获取对象信息 拿到一个变量,除了用 isinstance() 判断它是否是某种类型的实例外,还有没有别的方法获取到更多的信息呢? 例如,已有定义: class Person(object): def ...
- python动态获取对象的属性和方法 (转载)
首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding:utf-8 import sys def foo():pass class Cat(object): def __init__ ...
- python动态获取对象的属性和方法
http://blog.csdn.net/kenkywu/article/details/6822220首先通过一个例子来看一下本文中可能用到的对象和相关概念.01 #coding: UTF- ...
随机推荐
- 前端快闪三:多环境灵活配置react
你已经使用Create React App脚手架搭建了React应用,现在该部署了. 一般会使用npm run build或者yarn build构建出静态资源, 由web服务器承载. 您会体验到 多 ...
- Mybatis里@InsertProvider、@UpdateProvider方法里使用if test标签
例如: ··· insert into TEST1(<if test="base_id!=null and base_id!=''">base_id,</if&g ...
- Node.js Koa框架学习笔记
Koa 基本介绍 Koa是Node.js中非常出名的一款WEB框架,其特点是短小精悍性能强. 它由Express原版人马打造,同时也是Egg框架的设计蓝图,可以说Koa框架的学习性价比是非常高的. 官 ...
- 利用Jackson序列化实现数据脱敏
几天前使用了Jackson对数据的自定义序列化.突发灵感,利用此方法来简单实现接口返回数据脱敏,故写此文记录. 核心思想是利用Jackson的StdSerializer,@JsonSerialize, ...
- CSharp委托与匿名函数
CSharp委托与匿名函数 场景 面对事件处理,我们通常会通过定义某一个通用接口,在该接口中定义方法,然后在框架代码中,调用实现该接口的类实例的方法来实现函数的回调.可能这样来说有些抽象,那我们提供一 ...
- Serverless 在编程教育中的实践
说起Serverless这个词,我想大家应该都不陌生,那么Serverless这个词到底是什么意思?Serverless到底能解决什么问题?可能很多朋友还没有深刻的体会和体感,这篇文章我就和大家一起聊 ...
- Geocoding Tools(地理编码工具)
地理编码工具 # Process: 创建地址定位器 arcpy.CreateAddressLocator_geocoding("", "", "&qu ...
- 二、Ansible基础之模块篇
目录 1. Ansible Ad-Hoc 命令 1.1 命令格式 1.2 模块类型 1.3 联机帮助 1.3.1 常用帮助参数 1.4 常用模块 1.4.1 command & shell 模 ...
- 【c++ Prime 学习笔记】第6章 函数
6.1 函数基础 函数定义包括:返回类型.函数名字.由0个或多个形参组成的列表以及函数体 通过调用运算符()来执行函数,它作用于一个表达式,该表达式是函数或函数指针.圆括号内是一个逗号隔开的实参列表, ...
- 面试题系列:new String("abc")创建了几个对象
new String("abc")创建了几个对象 面试官考察点猜想 这种问题,考察你对JVM的理解程度.涉及到常量池.对象内存分配等问题. 涉及背景知识详解 在分析这个问题之前,我 ...