6.2 类和类的定义
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如学生类,而实例是根据类创建出来的一个个具体的对象
,每个对象都拥有相同的方法,但各自的数据可能不同。
6.2.1 什么是类
当你在马路上看到一辆飞驰的奥迪汽车时,这辆奥迪车就是汽车类
的一个实例。汽车就是一个类,每辆车都是汽车类的一个实例。
可以将类
理解为工厂制造汽车的设计图,通过这个设计图可以持续的造(实例化)不同的汽车。
类一般都具有属性和方法,在汽车类
中,属性可以是汽车的车身颜色,方法可以是前进、刹车等。
人也是一种类
,称为人“类”。张三、李四、王五都是人“类”的实例化。类
由属性和方法组成。属性是属于类
的变量,比如在人“类”中,属性可以包括姓名、性别、年龄等。而方法是存储在类
中的函数(操作、动作)。比如:吃饭、睡觉、走路等。
6.2.2 创建类
上面讲了这么多,让我们来在Python中创建一个最简单的类吧。
最简单的类
class MyClass1:
pass
上面是在Python中语法允许的情况下创建的一个最简的类。在Python中创建类需要用到关键字class
,然后是类名(注意:在Python中,一般使用驼峰命名法命名类名)。接着就是:
和换行后的pass
语句,表示这个类啥也不干。
这样我们就创建了一个名为MyClass1
的类,上面的Python语句仅仅只是创建了这个类,就像之前用def
创建一个函数一样,只是定义了。函数要想要使用则需要进行调用。而类想要定义则需要初始化:
>>> mc = MyClass1()
像上面的语句就是进行了类的初始化,mc就是MyClass类的一个实例化对象。
接下来我们将一步步介绍创建类时,添加属性和方法,一步步完善类。
6.2.3 实例化时传递参数
有时候在定义一个类时,我们可以直接定义类的属性,然后在实例化时进行修改,就像这样:
class Person:
def __init__(self):
self.name = None
self.age = None
lisa = Person()
lisa.name = 'lisa'
lisa.age = 20
上面的代码中,我们在定义Person类时,同时也定义了2个属性:name和age。并且初始化为None。
后面则可以通过类.属性的方式访问或修改类的属性。
这种方法虽然可行,但是如果要创建多个实例化对象,每次都要再重新修改属性name和age非常不方便。于是,我们可以在定义类的时候直接传入参数,然后在类的初始化时同时为类的属性赋值。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
lisa = Person('lisa', 18)
print(lisa.name, lisa.age)
lisa 18