python入门系列:Python中一切皆对象

引言

Java语言也是面向对象的语言,但是Python要更加彻底
Python的面向对象特性,是它使用起来灵活的根本所在
对象的特点

可以赋值给一个变量

函数也是对象

def test(name):
print(name)

my_func = test # 注意 只写函数名 和 函数名加括号 的区别
my_func("MetaTian") # 打印:MetaTian
可以添加到集合中去

def plus(a, b):
print(a+b)

def minus(a, b):
print(a-b)
fun_list = []
fun_list.append(plus)
fun_list.append(minus)
for item in fun_list:
item(2, 1)

result:

3

1

可以作为参数传递给函数

def plus(a, b):
print(a+b)

def calculate(method, a, b):
method(a, b)
calculate(plus, 1, 2)

result:

3

可以当做函数的返回值

这也是装饰器的原理

def inner():
print("MetaTian")

def deco():
print("decorating...")
return inner

my_func = deco()
my_func()

result:

decorating...

MetaTian

对象的3个属性

身份:在内存中的地址是多少,可用id()函数查看
类型:是什么类型的对象,可用type()函数查看
值:对象中的内容是什么
type object和class的关系

type和class

关系:type -> class -> obj,obj是我们平时使用的对象,它由class对象生成,可以是我们自定义的类,也可以是内建的类。上面说了,一切皆对象,class也是以type为模板,生成的对象。

type()函数,当传入一个参数时,返回对象的类型。传入三个参数时,用来生成一个类。具体的参数情况和使用方式可以查阅官方文档:docs.python.org/3/library/functions.html#type

print(type(1))
print(type(int))

result:

<class ‘int‘>

<class ‘type‘>

class Person:
pass
student = Person()
print(type(student))
print(type(Person))

result:

<class ‘main.Person‘>

<class ‘type‘>

print(type(type))

result:

<class ‘type‘>

type是以它自己为类生成的一个对象。如果熟悉静态语言,这似乎并不好理解,但是对动态语言来说就是这么自然。

object

object是最根本的一个基类,如果自己定义的类没有显示地去继承某一个类,则它会自动继承object。上面讨论的是类和对象之间的关系,现在要讨论的是类和类之间的关系。

class Person:
pass
class Student(Person):
pass
print(Student.bases)
print(Person.bases)
print(int.bases)
print(object.bases)

result:

(<class ‘main.Person‘>,)

(<class ‘object‘>,)

(<class ‘object‘>,)

()

print(type.bases)
print(type(object)

result:

(<class ‘object‘>,)

<class ‘type‘>

type是一个类,它继承的是object,object作为一个对象又是以type为类型生成的。

总结

常见的内置类型

None

全局只有一个
就是内存中的某一块区域
数值

int
float
complex
bool
迭代类型

序列类型

list
tuple
range
str
映射类型

dict
集合类型

set
frozenset
上下文管理类型

with
其他

模块类型
class 和实例
函数类型
方法类型
代码类型
object
type
...
小结

综合上面的几点讨论,可以看到Python和其他的静态语言是大不相同。一切皆对象的设计思想,让Python程序的编写异常灵活,但是相比静态语言,它也丢失了一定的严谨性,有很多错误,我们只能够在代码的运行过程中才能发现。但这些动态语言的通病并未影响我们开发效率的提升。

注:喜欢python + qun:839383765 可以获取Python各类免费最新入门学习资料!

原文地址:http://blog.51cto.com/14186420/2349810

时间: 2024-10-11 07:49:55

python入门系列:Python中一切皆对象的相关文章

第2章 python中一切皆对象

python中一切皆对象 函数和类也是对象,属于python的一等公民 什么是一等公民 1.赋值给一个变量 2.可以添加到集合对象中 3.可以作为参数传递给函数 4.可以当作函数的返回值 def ask(name="bobby"): print(name) my_func = ask my_func("bobby") 运行结果 class Person: def __init__(self): print("bobby") my_class =

(原创)Python字符串系列(1)——str对象

在本博客 <Python字符串系列> 中,将介绍以下内容: Python内置的str对象及操作 字符串的格式化 Python中的Unicode字符串 Python中的正则表达式 re模块 本文将介绍Python内置的 str 类型,列举Python中字符串对象支持的方法,使用这些方法可以实现强大的字符串处理功能. 在Python 2 中,普通字符串与Unicode字符串有着明确的区分,二者都是Python内置的基本类型,例如: >>> type(str) <type '

Python入门之Python的单例模式和元类

本章内容 一.单例模式 二.元类 ============================= 一.单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在. 当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场.例如,某个服务器程序的配置信息存放在一个文件中,客户通过一个AppConfig的类来读取配置文件的信息.如果在程序运行期间,有很多地方需要使用配置文件的内容,也就是说,很多地方都需要创建AppConf

Python 入门之Python基础知识

Python 入门之Python基础知识 1.变量 (1)变量就是把程序运行的中间结果临时存在内存中,以便后续代码使用 (2)变量的作用: 昵称,就是代指内存中某个地址中的内容 a = 123 变量名 赋值 值 (3)变量命名的规则: (1). 变量名由字母.数字.下划线组成 (2). 变量名不能以数字开头 (3). 变量名要具有可描述性 (4). 变量名要区分大小写 (5). 变量名禁止使用Python关键字 (6). 变量名不能使用中文和拼音(不是不能使用,太low) (7). 变量名推荐写

Python入门 —— 初识Python

Python入门 —— 初识Python Python入门 —— 初识Python 一:Python介绍 1. Python是什么? Python是一门编程语言,编程语言是一门语言. 语言就是一个事物与另一个事物沟通的工具. 而编程语言则是人与计算机沟通的介质. 2. 为什么要跟计算机沟通:为了奴役计算机 奴隶主--------(人类语言)------->奴隶 人类----------(编程语言)------->计算机 3. 什么是编程? 奴隶主把想让计算机替自己做事情的逻辑用编程语言给表达出

gj2 python中一切皆对象

2.1 python中一切皆是对象 动态语言和静态语言的区别,Python的面向对象更彻底 同时动态语言,代码的灵活性高 没有编译(检查)的过程,错误只有在运行起来后才会发现 函数和类也是对象,属于python的一等公民 1. 赋值给一个变量 2. 可以添加到集合对象中 3. 可以作为参数传递给函数 4. 可以当做函数的返回值 def ask(name="lewen"): print(name) class Persoon(object): def __init__(self): pr

Python中万物皆对象?的理解

在很多地方都看到有过这样一句话,但是对象这个词的理解依然停留在谈朋友那个对象上-- <python中的对象的理解> python中一切皆为对象,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象, type标识对象的类型, value是对象的值 is判断的是a对象是否就是b对象,是通过id来判断的 ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的

python中一切皆对象及__init__.py文件的使用

py一切皆对象,数据.函数.后续声明的类也是一个对象,而函数名称就是对象名称 函数名可直直接返回,这种叫做闭包 python中__init__.py文件的作用,__all__属性配置加载的白名单 原文地址:https://www.cnblogs.com/liuchunxiao83/p/12307626.html

python入门系列:函数

引言 将一段代码集中到一块,起一个名字,下次可以根据这个名字再次使用这个代码块.作用:方便代码重用分解任务,简化程序逻辑使代码更加模块化函数的参数 所有的传参方式都是传引用,注意列表做参数和数值做参数容易出现的问题. 单个参数 多个参数 定义方式 def funName(arg1, arg2, arg3...):pass 调用方法 funName(arg1, arg2, arg3...) # 形参和实参一一对应funName(arg2=v2, arg3=v3, arg1=v1) # 指明形参的名