在面向对象的设计中,程序员可以创建任何新的类型,这些类型可以描述每个对象包含的数据和特征,这种类型称为类。类是一些对象的抽象,隐藏了对象内部复杂的结构和实现。类由变量和函数两部分构成,类中的变量称为成员变量,类中的函数称为成员函数。
类和对象的区别
类和对象是面向对象中的两个重要概念,初学者经常把类和对象混为一谈。类是对客观世界中事物的抽象,而对象是类实例化后的实体。
Python类的定义
Python使用class关键字定义一个类。当程序员需要创建的类型不能用简单类型来表示时,则需要定义类,然后利用定义的类创建对象。类把需要使用的变量和方法组合在一起,这种方式称为封装。
类的定义如下:
# 不显示继承object类
class class_name:
...
# 继承自父类
class class_name(parent):
...
类必须用关键字class定义,关键字class后面是类名。类的主体由一系列的属性和方法组成。
示例如下:
class Fruit:
def __init__(self, name, color): # __init__为类的构造函数
self.name = name
self.color = color
def grow(self): # 定义grow函数,类中的函数称为方法
print(self.color, self.name, 'grow ...')
类的方法中必须有1个self参数。但是在方法调用时,可以不传递这个参数。
Python对象的创建
创建对象的过程称为实例化。当一个对象被创建后,包含3个方面的特性:对象的句柄、属性和方法。
对象的句柄用于区分不同的对象,当对象被创建后,该对象会获取一块存储空间,存储空间的地址即为对象的标识。
对象的属性和方法与类的成员变量和成员函数相对应。
Python的实例化与Java不同,并不需要new关键字。Python的实例化与函数的调用相似,使用类名加圆括号的方式。
示例如下:
fruit = Fruit('apple', 'green')
fruit.grow()
Python中类的属性和方法
Python中类由属性和方法组成。类的属性是对数据的封装,而类的方法则表示对象具有的行为。
Python中的构造函数、析构函数、私有属性或方法都是通过名称约定区分的。
Python中类的属性
Python中类的属性一般分为私有属性和公有属性。
属性的名字以两个下划线开始,就表示为私有属性;反之,没有使用双下划线开始的表示为公有属性;类的方法也同样使用这样的约定。
Python中类的方法
Python中类的方法也分为私有方法和公有方法。
私有方法不能被模块外的类或函数调用。C#、Java中的静态方法使用关键字static声明,而Python使用@staticmethod修饰器把普通的方法转化为静态方法。