在刚开始接触Python的时候,就一直听到一句话:

一切皆对象

那么,对于对象他有一些什么重要的属性呢。

Python对象的属性

对于一个对象而言,他首先应该是具备类型这一属性,那么类型对应的则是值,由于对象都是在内存中生存的,所以他也应该拥有一个地址。

因此,作为一个对象,他会有以下三个属性:

类型

地址

先看以下代码,对于一个变量a有以下的定义:

a = 1

b = "hello world"

c = [1,2,3]

print a, type(a), id(a)

print b, type(b), id(b)

print c, type(c), id(c)

output:

1 38567656

hello world 43878752

[1, 2, 3] 43862216

通过type函数可以直接获得对象的类型。

通过id函数可以直接获得对象的地址。

一切皆对象

基本数据类型实例是对象

Python有以下几种基本数据类型:

#数字

1234, 3.14, 1231L, 3+4j, Decimal

#字符串

'hello', "world"

#列表

[1,2,3,4]

#元组

(1, "hello", 2)

#字典

{1 : "hello", 2 : "world"}

#文件

file = open("file.txt", 'r')

#其它类型

集合,类型,None,布尔型

类是对象

除了上面列举的a,b,c三个是对象,类也是一个对象,类是元类的实例。

class C(object):

def __init__(self):

pass

print type(C)

>>>

由上面的代码可以看到,类C是的实例,是类的类,我们称为元类,元类是用来定制类的关键。这点暂时不做展开。

函数是对象

除了上面这些,函数也是对象,具体可以看下面的代码。

def foo():

print "foo"

a = foo

a()

>>>foo

从代码中可以看到,函数可以作为一个对象来进行传递,这一特性加上闭包则是Python的语法糖装饰器。

def wrap(func):

def wrapper(*args, **kwargs):

print "Hello %s" % func.__name__

func(*args, **kwargs)

return wrapper

@wrap

def foo():

print "foo"

a = foo

a()

>>>Hello foo

>>>foo

装饰器将函数作为一个对象传入,a = wrap(foo),执行的时候则会执行Hello foo的语句然后再执行foo函数,装饰器是AOP(面向切面编程)的一种用法,可以在不改变函数结构的情况下通过语法糖插入日志、性能调试等功能。

补充:对象分类

Python的基本数据类型按是否可变可以分为:

可变数据类型

不可变数据类型

可变数据类型:

指在运行过程中可以更改其值的数据类型,常见的有list(列表),dict(字典)

不可变数据类型:

指在运行过程不可以改变值的数据类型,常见的有tuple(元组),num(数字),str()字符串

python一切皆对象的理解_Python难点解析---初级篇2.一切皆对象相关推荐

  1. Python 难点解析---初级篇1.Python WWH

    Python作为一个使用简便,并且开发效率极快的解释型语言,上手特别的简单,但是简洁的语法中有时也藏着不少的坑,接下来的文章里面会把笔者近一年学习中遇到的坑都翻出来. 接下来用WWH原则来解析一下Py ...

  2. 搜索引擎——用户搜索意图的理解及其难点解析,本质是利用机器学习用户的意图分类...

    用户搜索意图的理解及其难点解析 搜索引擎涉及的技术非常的繁复,既有工程架构方面的,又有算法策略方面的.综合来讲,一个搜索引擎的技术构建主要包含三大部分: 对 query 的理解 对内容(文档)的理解 ...

  3. python一切皆对象的理解_Python中万物皆对象?的理解

    在很多地方都看到有过这样一句话,但是对象这个词的理解依然停留在谈朋友那个对象上-- python中一切皆为对象,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) ...

  4. python中的引用怎么理解_python 引用和对象理解

    今天浏览博客的时候看到这么一句话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象 ...

  5. 求python一个类与对象的代码_Python基础系列(五)类和对象,让你更懂你的python代码...

    首先,非常感谢各位打开本博文,本博文是Python入门基础系列文章之一,Python目前是非常火的编程工具,其实作为编程不在只是程序员的专利,每一个人在日常的工作中.学习中都会或多或少的要用到一些工具 ...

  6. python语言不支持面向对象_Python 面向对象(初级篇)

    概述面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 面向 ...

  7. python变量类型是动态的_Python 学习 第四篇:动态类型模型

    Python的变量不用声明,赋值之后就可以直接使用,类型是在运行过程中自动确定的,这就是动态类型模型.该模型把变量和对象设计成两个不同的实体,对象是存储数据的地方,对象的类型是由初始值自动决定的,而变 ...

  8. Javascript的面对对象的理解 【上】(prototype,函数和对象等概念)

    首先先生明一下JavaScript面对对象和Java,c#这种高级语言的面对对象有很较大的不同. JavaScript在面对对象"继承"的时候,可以动态的修改修正.换句话说可以动态 ...

  9. python一切皆对象的理解_python中为什么万物皆对象

    在python环境中我们输出一个没有声明的变量a 为什么会报name 'a' is not defined.为什么是name 而不是variable. 因为在python中把所有的函数名,变量名.类型 ...

最新文章

  1. ionic4中使用Swiper触屏滑动---心酸路
  2. Xcode 添加前缀
  3. 九、爬虫学会如何入库
  4. SAP UI5:如何处理resource not found for the segment XXXXX error message
  5. 不生效 设置了viewport_配置viewport
  6. 【渝粤教育】电大中专电商运营实操 (8)作业 题库
  7. Python笔记(6) 数字
  8. Flask框架+ajax框架
  9. 黑客炸弹弹窗假装自己是黑客
  10. html文件上传协议,模拟HTML表单上传文件(RFC 1867)
  11. winows10和centos 双系统 安装记录
  12. Quasi_Newton
  13. mysql查询结果百分比表示_MySQL 查询结果以百分比显示简单实现
  14. 如何高效进行大规模分类?
  15. GBase8s数据库GRANT 语句
  16. 名字与地址转换getservbyname 与 getservbyport函数
  17. [zz]busycai的找工之路
  18. Ubuntu Conda和pip安装Pytorch失败解决 | pytorch安装网络问题 | pip国内源无效
  19. 国内优秀开源电商项目评测、PHP版和Java版都有开源
  20. 新玺配资:能耗双控双刃剑 造纸板块一飞冲天

热门文章

  1. 分布式发布订阅模型网络的实现有哪些
  2. CURL POST PHP
  3. bzoj 1930: [Shoi2003]pacman 吃豆豆 [费用流]
  4. Spring事务管理,使用@Transactional注解
  5. 线程池——JAVA并发编程指南
  6. 【Win10】【Win2D】实现控件阴影效果
  7. Google Chrome源码剖析【序】
  8. 【个人笔记】OpenCV4 C++ 图像处理与视频分析 07课
  9. Android8.1 Camera2+HAL3之HIDL open()流程(二十)
  10. Ubuntu18.04下使用docker制作ubuntu20.04镜像