python ch10 类

本文介绍了在Python中面向对象编程的概念,通过实例化`Dog`和`Car`类,展示了如何创建对象、定义和使用属性、方法(如`sit`和`read_odometer`),以及继承和扩展类。还涉及了如何使用Python标准库中的`OrderedDict`。
摘要由CSDN通过智能技术生成
# 在面向对象编程中,
#  你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。
#  编写类时,你定义一大类对象都有的通用行为。基于类创建对象时,
#  每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独
#  特的个性。

#  1  创建和使用类
# ,在Python中,首字母大写的名称指的是类。
class Dog():
    """模拟小狗的简单尝试"""
    def __init__(self,name,age):##这里的下划线要敲两遍
        """初始化属性name和age"""
        self.name = name
        self.age = age

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

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

my_dog = Dog('willie', 6)  #方法__init__()并未显式地包含return语句,但Python自动返回一个表示这条小狗的实例。
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()

your_dog = Dog('lucy', 3)
print("\nYour dog's name is " + your_dog.name.title() + ".")
print("Your dog is " + str(your_dog.age) + " years old.")
your_dog.sit()

#
# 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
#
#
# 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.")

#导入
#import car
from car import Car,Battery
my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
# 直接修改属性的值
my_new_car.odometer_reading = 23
my_new_car.read_odometer()
#通过方法修改属性的值
my_new_car.update_odometer(26)
my_new_car.read_odometer()
my_new_car.increment_odometer(100)
my_new_car.read_odometer()

# 2 继承
class ElectricCar(Car):
    """电动汽车的独特之处"""
    def __init__(self, make, model, year):
        """初始化父类的属性"""
        super().__init__(make, model, year)
        #  super()是一个特殊函数,帮助Python将父类和子类关联起来。这行代码让Python调用
        #  ElectricCar的父类的方法__init__(),让ElectricCar实例包含父类的所有属性。父类也称为超
        #  类(superclass),名称super因此而得名

        """初始化父类的属性,再初始化电动汽车特有的属性"""
        self.battery_size = 70

        self.battery = Battery()

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

print("")
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
# 给子类定义属性和方法0
my_tesla.describe_battery()
print("")
# 将实例用作属性
my_tesla.battery.describe_battery()

# 3 python 标准库
print("")
from collections import OrderedDict
favorite_languages = OrderedDict()
favorite_languages['jen'] = 'python'
favorite_languages['sarah'] = 'c'
favorite_languages['edward'] = 'ruby'
favorite_languages['phil'] = 'python'
for name, language in favorite_languages.items():
    print(name.title() + "'s favorite language is " +
    language.title() + ".")

# 如何编写类;如何使用属性在类中存储信息,以及如何编写方法,以
#  让类具备所需的行为;如何编写方法__init__(),以便根据类创建包含所需属性的实例。你见识
#  了如何修改实例的属性——包括直接修改以及通过方法进行修改。你还了解了:使用继承可简化
#  相关类的创建工作;将一个类的实例用作另一个类的属性可让类更简洁。
#  你了解到,通过将类存储在模块中,并在需要使用这些类的文件中导入它们,可让项目组织
#  有序。你学习了Python标准库,并见识了一个使用模块collections中的OrderedDict类的示例。

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


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.")

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值