美文网首页
从0开始学python第8.1节-类和对象

从0开始学python第8.1节-类和对象

作者: 阿达老师 | 来源:发表于2018-08-31 08:34 被阅读0次

    什么是面向对象

    之前我们学习了函数,通过函数将一些特定的逻辑封装起来。这种将代码组织起来的方式也叫过程式编程。我们今天学习的面向对象编程则将程序做了更高维度的封装,用人类更容易理解的方式编程。

    类&实例

    中国道德经有一句话:道生一,一生二,二生三,三生万物,讲的是世间的万物都是从特定的模板里生出来的。这个模板就是类,生出来的东西就是对象。

    我们来看几个案例:

    宠物狗有很多种:泰迪、金毛、哈士奇 都属于狗科动物。狗本身是一个模板(类)。狗作为一个,拥有尾巴、腿、耳朵等身体器官;可以执行跑、叫等动作。泰迪、金毛、哈士奇 是从狗模板“生出来的”,因此它们也拥有这些属性。泰迪、金毛、哈士奇 就是狗这个类的实例

    汽车也有很多种,公交车、轿车、越野车都属于汽车。汽车本身是一个模板(类),汽车作为一,拥有方向盘、发动机、车身、最大时速等属性;可以执行发动、变方向、鸣笛等方法。公交车、轿车、越野是从汽车模板“生出来”的,因此,他们也拥有这些构造。公交车、轿车、越野车就是汽车这个类的实例

    看过上面这两个例子,对什么是是类、什么是实例有没有一个形象的了解呢?下面我们看看用python怎么表达类和实例吧。

    在python里定义类

    在python中定义一个类可以参照下面的语法:

    class Dog:   pass  #类代码

    我们用 class关键字定义一个类,注意类的名字用首字母大写的单词来组成,为什么要首字母大写呢?我们下面会解释。

    python里对类实例化

    定义好类,接下来通过类来构建实例了。看代码:

    teddy = Dog() print(teddy)

    我们定义了一个变量teddy,Dog()方法就是定义一个类的实例。print(teddy)会输出 <__main__.Dog object at 0x1041019e8>

    我们把类的首字母大写,就不会把类和实例搞乱了。

    实例属性

    类在定义好后,会拥有一个__init__方法。这个方法是当依照这个类构建实例的时候被调用的,我们来看代码:

    class Dog:    def __init__(self):        # 尾巴、腿、耳朵        self.tail = 'small'        self.leg = 'long'        self.ear = 'stand' teddy = Dog() print(teddy.leg)

    在__init__方法里,有一个self参数,这个参数用来表达实例本身。那里面的 self.tailself.leg 就是实例属性了。类的每个实例有自己的属性。比如泰迪的尾巴是短的、耳朵是下垂的。而哈士奇的尾巴是长的,尾巴是立起来的。

    方法

    除了属性外,类还有方法。我们来看代码:

    class Dog:    def __init__(self, name):        # 尾巴、腿、耳朵        self.tail = 'small'        self.leg = 'long'        self.ear = 'stand'        self.name = name    def call(self):        print("汪汪", self.name) teddy = Dog('teddy') husky = Dog('husky') teddy.call() husky.call()

    call 函数是类的方法,每个实例都会有这个方法。方法定义中会有默认的self参数,用来代表实例自己。这个代码还可以印证每个实例有自己的属性。

    类属性

    除了实例属性外,还有类属性。看代码:

    class Dog:    dogCount = 0    def __init__(self, name):        # 尾巴、腿、耳朵        self.tail = 'small'        self.leg = 'long'        self.ear = 'stand'        self.name = name        Dog.dogCount += 1    def call(self):        print("汪汪", self.name) teddy = Dog('teddy') teddy.call() print(Dog.dogCount) husky = Dog('husky') husky.call() print(Dog.dogCount)

    dogCount 是Dog类的属性,类属性从属于类。每次改版类属性的值都会反映的所有的实例上。

    这节课我们讲了面向对象,面向对象是编程里很核心的概念。一定要能够有清晰的理解,怎么样,小朋友们掌握了吗?

    阿达老师-孩子身边的编程专家

    相关文章

      网友评论

          本文标题:从0开始学python第8.1节-类和对象

          本文链接:https://www.haomeiwen.com/subject/dxnjwftx.html