• python从入门到实践-9章类


    #!/user/bin/env python
    # -*- coding:utf-8 -*-

    # 类名采用的是驼峰命名法,即将类名中每个单词的首字母大写,而不使用下划线。
    # 对于每个类,都应紧跟在类定义后面包含一个文档字符串:简要描述类的功能,并遵循写函数的文档字符串时的格式约定
    # 每个模块也应当包含一个文档字符串,对其中的类可用于做什么进行描述。
    class Dog():
    def __init__(self,name,age):
    '''__init__ 方法'''
    '''形参self必不可少,还必须位于其他形参前面'''
    self.name = name # 将name赋值到 self 为前缀的变量 供类使用
    self.age = age # 【这一步是必须的】

    def sit(self):
    print(self.name.title() + " is setting now.")

    def roll_over(self):
    print(self.name.title() + " rolled over!")
    # self 为前缀的变量都可以供类中所有方法使用。

    my_dog = Dog('wille',6)

    print("my dog's name is " + my_dog.name.title() +'.')
    print("my dog is " + str(my_dog.age) + " years old.")

    # 调用类中的方法
    my_dog.sit()
    my_dog.roll_over()
    # 可以创建多个实列


    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_new_car = Car('audi','a4','2016')
    print(my_new_car.get_descriptive_name())
    my_new_car.read_odometer()

    # 修改属性的值
    # 1.直接访问汽车属性odometer_reading值
    # my_new_car.odometer_reading = 23
    # my_new_car.read_odometer()
    # 2.通过方法修改属性的值
    # 创建类函数来修改odometer_reading的值
    my_new_car.update_odometer(23)
    my_new_car.read_odometer()

    # 通过方法对属性的值进行递增 increment_odometer
    print('')

    # 【继承】
    # super() 是一个特殊的函数,帮助python将父类和子类联系起来。
    # 这行代码让python调用其父类的方法__init__,让子类包含父类所有的属性。父类(又名超类superclass)
    class ElectricCar(Car):
    def __init__(self,make,model,year):
    # 电动车的独特之处,初始化父类的属性,在初始化电瓶车独特的属性
    super().__init__(make,model,year) # 调用其父类的方法__init__
    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()

    # 重写父类的方法 重名(覆盖)即可进行重写

    print("")
    # 【将实列用作属性】
    class Battery():
    #模拟电动车电瓶
    def __init__(self,batterY_size=70):
    self.battery_size = batterY_size

    def describe_battery(self):
    print("this car has a " + str(self.battery_size) + "-kwh battery.")

    class ElectricCar_0(Car):
    def __init__(self,make,model,year):
    super().__init__(make,model,year)
    self.battery = Battery()
    # 调用实列当做属性


    my_tesla = ElectricCar_0('tesla','model s','2016')
    print(my_tesla.get_descriptive_name())
    my_tesla.battery.describe_battery()

    # 方便于对Battery() 进行修改


    # 导入类
    # 导入单个类:from car(文件) import ElectricCar
    # 从一个模块中导入多个类:from car import Car,ElectricCar
    # 导入整个模块,在使用句号表示访问需要的类:import car car.Car
    # 导入模块中所有类:from module_name import *

    # 从模块中导入的类可以被【继承】
    # python标准库和外部库

  • 相关阅读:
    Mac 下 IDEA 无法启动的问题
    oracle impdp
    张亚琴:人生是赛场不是战场,人生是一个没有终点的赛场,永远都在起跑线上
    sc抽象组件工作
    Jenkins 实现gitLab提交代码立即利用Jenkins发版
    Jenkins 修改admin密码
    docker 安装nginx,并配置vue项目在nginx启动
    No 'Access-Control-Allow-Origin' header is present on the requested resource 是跨域的问题吗?
    Vue个别vue文件不能热加载
    IVT虚拟化支持
  • 原文地址:https://www.cnblogs.com/vwei/p/9880012.html
Copyright © 2020-2023  润新知