Python 面向对象

前言

真实世界的对象特征: 状态和行为

  • 猫状态:品种、名字
  • 猫行为:喵叫、摇尾巴、捉老鼠
台灯
  • 台灯状态:开、关
  • 台灯行为:打开、关闭
台式收音机
  • 收音机状态:开、关、当前音量、当前频道
  • 收音机行为: 打开、关闭、增加音量、减小音量、搜索、扫描、调频

Python中的类叫Class object,类的实例叫Instance object

类(Class)

基本上可以看作数据(特性)以及由一系列可以存取、操作这些数据的方法所组成的集合。

来源:《Python基础教程》Chapter7

用来描述具有相同的属性(Attribute)和方法(Method)的对象的集合。它定义了该集合中每个对象所共有的属性和方法,对象是类的实例。

来源:菜鸟教程

在实际编程中经常用的属性这个词,在python的class中有两种属性:类属性数据属性。(大多数编程语言都有这样两种属性),类属性属于类,数据属性属于类的实例。我们假设有类Test,则一般这两种属性的用法
类属性
Test.mode;
数据属性
t = Test()
t.name

来源:类属性解释

类对象提供两种操作
  1. 属性引用;属性引用语法:obj.name; 有效的属性名是类对象创建时类的名称空间内的所有名字。例如:MyClass.i
>>> class MyClass:
...     """A simple example class"""
...     i = 123
...     def f(self):
...         return 'hello world'
... 
>>> MyClass.i
123
>>> MyClass.i = 10
  1. 实例化;实例化的对象唯一可以进行的操作是属性引用;
    类的实例化使用函数记号,例如:
>>> x =MyClass()
>>> x.i
42

新建一个对象的过程称为实例化(instantiation) ,而对象是这个类的一个实例。每个对象都是某个类的实例,所以“对象”和“实例”这两个词很多情况下情况下都可以互换。
来源:《像计算机科学家一样思考Python》

实例化对象有两类有效的属性名,数据属性方法数据属性(Data attribute)对应C++中的数据成员,数据属性无需声明,第一次给它赋值时就表明了它的存在;另一种实例化的属性引用叫做方法(Method),方法是对象内的一个函数。
类的方法
在类的内部,使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数。
通常调用一份方法的方式是:
x.f()
但是,由于x.f是一个方法对象,所以可以存储起来,以便以后调用。

>>> class MyClass:
...     """A simple example class"""
...     i = 12345
...     def f(self):
...         return 'hello world'
... 
>>> x = MyClass()
>>> x.f()
'hello world'
>>> xf = x.f
>>> xf()
'hello world'

你可能感兴趣的:(Python 面向对象)