06类

作者: 全宇宙最帅De男人 | 来源:发表于2018-01-29 13:08 被阅读0次

    [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 *(不推荐)
    模块导入模块

    相关文章

      网友评论

          本文标题:06类

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