美文网首页
Python - 类与对象

Python - 类与对象

作者: 不给时间回忆 | 来源:发表于2018-03-18 16:10 被阅读0次

使用类的三步骤

  • Step 1. 定义类

类是对象的蓝图和模板 有了类就可以创建对象
定义类需要做的两件事情:数据抽象和行为抽象
数据抽象 - 抽取对象共同的静态特征(找名词) - 属性
行为抽象 - 抽取对象共同的动态特征(找动词) - 方法
定义类的关键字 - class - 类名(每个单词的首字母大写)

  • Step 2. 调用构造方法创建学生对象

实际上调用的是Student类中init方法

  • Step 3. 给对象发出消息

通过给对象发消息让对象完成某些工作就
解决任何的问题都是通过让对象去做事情

修改属性的值

  • 通过直接访问属性进行修改
  • 通过方法修改属性的值 - 传参
  • 通过方法对属性的值进行递增

练习:计算长方形的周长和面积

class Rect:

    def __init__(self, lenght, width):
        self.lenght = lenght
        self.width = width

    def area(self):
        return self.lenght * self.width

    def week_lenght(self):
        return (self.lenght + self.width) * 2

def mian():  
    ret1 = Rect(26, 20)
    print(ret1.area())
    print(ret1.week_lenght())

if __name__ == '__main__':
    main()

练习:时钟显示

from time import sleep

class Clock:

    def __init__(self, hour, minute, second):
        self.hour = hour
        self.minute = minute
        self.second = second

    def display(self):
        while True:
            print('目前的时间是:%d:%d:%d' % (self.hour, self.minute, self.second))
            self.second += 1
            if self.second == 60:
                self.minute += 1
                if self.minute == 60:
                    self.hour += 1
                    self.hour %= 60
                self.minute %= 60
            self.second %= 60
            sleep(1)

def main():
    clock1 = Clock(0, 0, 0)
    clock1.display()

if __name__ == '__main__':
    main()

继承

编写类时,并非总是要从空白开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承 。一个类继承 另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类 ,而新类称为子类 。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。

重写类方法

对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其进行重写。为此,可在子类中定义一个这样的方法,即它与要重写的父类方法同名。这样,Python将不会考虑这个父类方法,而只关注你在子类中定义的相应方法。

class Car(object):

    """一次模拟汽车的简单尝试"""
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    def get_descriptive_name(self):
         long_name = str(self.year) + ' ' + self.make + ' ' + self.model
         return long_name.title()

    def read_odometer(self):
        print("This car has " + str(self.odometer_reading) + " miles on it.")

    def update_odometer(self, mileage):
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
             print("You can't roll back an odometer!")

    def increment_odometer(self, miles):
        self.odometer_reading += miles


class Battery():

    def __init__(self, battery_size=70):
        self.battery_size = battery_size

    def get_range(self):
        """打印一条消息,指出电瓶的续航里程"""
        if self.battery_size == 70:
            range = 240
        elif self.battery_size == 85:
            range = 270

    def describe_battery(self):
        """打印一条描述电瓶容量的消息"""
        print("This car has a " + str(self.battery_size) + "-kWh battery.")


class ElectricCar(Car):
    # """电动汽车的独特之处"""
    def __init__(self, make, model, year):
        """初始化父类的属性"""
        # super() 是一个特殊函数,帮助Python将父类和子类关联起来
        super().__init__(make, model, year)
        self.battery_size = 70
        self.battery = Battery()

    def describe_battery(self):
        """打印一条描述电瓶容量的消息"""
        print("This car has a " + str(self.battery_size) + "-kWh battery.")


if __name__ == '__main__':
    my_tesla = ElectricCar('tesla', 'model s', 2016)
    print(my_tesla.get_descriptive_name())
    my_tesla.battery.describe_battery()

导入类

随着你不断地给类添加功能,文件可能变得很长,即便你妥善地使用了继承亦如此。为遵循Python的总体理念,应让文件尽可能整洁。为在这方面提供帮助,Python允许你将类存储在模块中,然后在主程序中导入所需的模块。

#将上面的类导入另一个程序中
from car import ElectricCar
#可以导入多个类
from car import Car, ElectricCar
#导入模块中的所有类
from module_name import *
#导入整个模块
from car

相关文章

  • python面向对象和元类的理解

    1 python类对象与实例对象 python中一切皆对象(广义上的对象),类也不例外,我们可以称类为类对象。py...

  • 23.Python之面向对象(类与对象)

    Python之类与对象 类类:用来描述具有相同的属性和方法的对象的集合(在Python中类与类型是一个概念)。特点...

  • python自定义功能之面向对象

    本章主要内容 类与对象 定义和使用类 类的属性和方法 类的继承 类的方法重载 总结: python中的类与对象与J...

  • Python - 类与对象

    使用类的三步骤 Step 1. 定义类 类是对象的蓝图和模板 有了类就可以创建对象定义类需要做的两件事情:数据抽象...

  • python类与对象

    类是一种数据类型,而对象是具有这种数据类型的变量。类是抽象的,不占有内存空间。而对象是具体的,占有储层空间。 py...

  • Python 类与对象

    Python 中面向对象编程的2个非常重要的概念:类和对象 对象是面向对象编程的核心,在使用对象的过程中,为了将具...

  • python 类与对象

    属性初始化 类可以起到模板的作用,可以在创建对象的时候,把认为必须绑定的属性强制填写进去,通过定义一个特殊的ini...

  • python 类与对象

    世间万物皆对象,世间万物皆可分类 类 人以类聚 物以群分,具有相似内部状态和运动规律的实体的集合(或统称为抽象),...

  • Python 类与对象

    版权所有,未经许可,禁止转载 章节 Python 介绍Python 开发环境搭建Python 语法Python 变...

  • python类与对象

网友评论

      本文标题:Python - 类与对象

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