本文最后更新于 320 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com
面向对象简介
对象一般是指一个类的实例,具有相关的成员变量和成员函数,在Python中成员变量叫做属性,成员函数叫做方法。
什么是对象
Python中几乎所有的东西都是对象。基本类型是对象,如整数:
a = 10
其属性与方法:
a.real
10
a.conjugate()
10
对象在内存中有一个地址与之对应,这个地址可以用id()函数查看:
id(len)
4514492720
同一个对象的内存地址一致:
b = a
id(b) == id(a)
True
id()函数本身也是对象:
id(id)
4514488128
在Python中,只有一些保留的关键字和符号不是对象。
自定义类型
基本形式为:
class ClassName(ParentClass):
"""class docstring"""
def some_method(self, ...):
return ...
具体规律为:
- class关键字在最开始。
- ClassName是自定义类型的名称, Python对类型名称没有规定,流行的做法是用大骆驼拼写法(Upper Camel Case)的记法,即每个单词的首字母大写,中间不留空格。
- “()”中的ParentClass用来表示继承关系,可省略,默认为object。
- “:”不能缺少,之后的内容要进行缩进。
- 三引号包含的部分是类型的文档即docstring,可以省略。
- 类型的方法定义与函数定义类似,第一个参数表示是对象本身,通常用self表示。
例如:
class Leaf(object):
"""A leaf falling in the woods."""
pass
其中,pass是一个特殊的关键词,用来占位,表示什么都不做。
新类型Leaf继承了Python中最基本的类型,即object。事实上所有的对象都是object:
isinstance(10, object)
True
isinstance([], object)
True
三引号的部分是对Leaf类的说明文档,可以调用Leaf的.__doc__
属性查看:
Leaf.__doc__
'A leaf falling in the woods.'
Leaf对象的产生:
leaf = Leaf()
在Python里,变量是区分大小写的,因此,leaf和Leaf是不同的变量。
再次调用生成的对象是不同的:
leaf2 = Leaf()
leaf is leaf2
False