06类

2018-01-29  本文已影响0人  全宇宙最帅De男人

[TOC]
根据类来创建对象被称为实例化,能让你使用类的实例.

创建和使用类

    class Dog():
        """一次模拟小狗的简单尝试"""

        def __init__(self,name,age):
            """初始化属性name和age"""
            self.name = name
            self.age = age

        def sit(self):
            """模拟小狗被命令时蹲下"""
            print(self.name.title() + " is nov sitting.")

        def roll_ove(self):
            """模拟小狗被命令时打滚"""
            print(self.name.title() + " rolled over!")

1.方法init()

类中的函数称为方法;方法init()定义了包含三个形参:self,name,age.在这个方法中,形参self必不可少,还必须在其他形参前面.
为什么必须在方法定义中包含形参self呢?
因为Python调用这个init()方法来创建Dog实例时,将自动传入实参self.每个与类相关联的方法调用都自动传递实参self,他是一个指向实例本身的引用,让实例能够访问类中的属性和方法.

根据类创建实例

1.访问属性
要访问实例的属性,可以使用句点表示法.
2.调用方法
*类创建实例后,可以使用句点表示法来调用类中定义的任何方法
3.创建多个实例

使用类和实例

    class Car();
        """一次模拟汽车的简单尝试"""

        def __init__(self,make,model,year):
            """初始化描述汽车的属性"""
            self.make = make
            self.model = model
            self.year = year

        def get_descriptive_name(self):
            """返回整洁的描述性信息"""
            long_name = str(self.year) + ' ' + self.make + ' ' + self.model
            return long_name.title()

    my_new_car = Car('audi','a4',2016)
    print(my_new_car.get_descriptive_name())

继承

一个类继承另一个类时,它将自动获得另一个类的所有属性和方法,
1.子类的方法init()
创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值.

    class Car():
        """一次模拟汽车的简单尝试"""

        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 cant't roll back an odometer!")

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

    class ElectricCar(Car):#定义子类必须在括号内指定父类的名称
        """电动汽车的独特之处"""

        def __init__(self,make,model,year):#接受创建Car实例所需的信息
            """初始化父类的属性"""
            super().__init__(make,model,year)#调用父类__init__(),让子类实例包含父类的所有属性

    my_tesla = ElectricCar('tesla','model s',2016)
    print(my_tesla.get_descriptive_name())

2.给子类定义属性和方法

    class Car():
        --snip--

    class ElectricCar(Car):
        """添加新属性"""

        def __init__(self,make,model,year):
            """初始化父类的属性,再初始化电动汽车特有的属性"""
            super().__init__(make,model,year)
            self.battery_size = 70

        def describe_battery(self):
            """打印一条描述电瓶容量的消息"""
            print("This car has a "+str(self.battery_size)+"-kWh battery.")
    my_tesla = ElectricCar('tesla','model s',2016)
    print(my_tesla.get_descriptive_name())
    my_tesla.describe_battery()

3.重写父类方法
重写父类的方法,可以在子类中定义一个需要重写的父类方法的名称方法.Python将不考虑这个父类方法,只关注子类定义的方法

导入类

1.导入单个类
创建一个只包含Car类的模块.

    """car.py.一个可用于表示汽车的类"""

    class Car():
        """一次模拟汽车的简单尝试"""

        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

创建my_car.py并导入Car类并创建实例

    from car import Car

    my_new_car = Car('audi','a4',2016)
    print(my_new_car.get_descriptive_name())

    my_new_car.odometer_reading = 23
    my_new_car.read_odometer()

导入整个模块import car
导入模块中所有类from module_name import *(不推荐)
模块导入模块

上一篇 下一篇

猜你喜欢

热点阅读