Python:从入门到实践-第九章(笔记)

9.1 :  创建和使用类

使用类几乎可以模拟任何东西


9.1.1 : 创建Dog类

根据Dog类创建每个实例都将存储名字和年龄,赋予每条小狗蹲下和打滚的能力;

# 定义一个名为Dog的类
class Dog:
    """一次模拟小狗的简单尝试"""

    # 类中的函数称为方法:方法__init__();
    # 方法__init__()定义成包含三个形参:self、name、和age;
    # 形参self必不可少,必须位于其他形参的前面;
    # 通过实参向Dog()传递名字和年龄,self会自动传递
    def __init__(self, name, age):
        """初始化属性name和age"""

        # 获取与行参name和age相关的取值,并将其赋给变量name和age,然后该变量关联到当前创建的实例;
        self.name = name
        self.age = age


    def sit(self):
        """模拟小狗收到命令时蹲下"""
        print(f"{self.name} is now sitting.")

    def roll_over(self):
        """模拟小狗收到命令时打滚"""
        print(f"{self.name} rolled over!")


9.1.2 :根据类创建实例

可将类视为有关如何创建实例的说明。Dog类是一系列说明,让python知道如何创建表示特定小狗的实例。

# 定义一个名为Dog的类
class Dog:
    """一次模拟小狗的简单尝试"""

    # 类中的函数称为方法:方法__init__();
    # 方法__init__()定义成包含三个形参:self、name、和age;
    # 形参self必不可少,必须位于其他形参的前面;
    # 通过实参向Dog()传递名字和年龄,self会自动传递
    def __init__(self, name, age):
        """初始化属性name和age"""

        # 获取与行参name和age相关的取值,并将其赋给变量name和age,然后该变量关联到当前创建的实例;
        self.name = name
        self.age = age

    def sit(self):
        """模拟小狗收到命令时蹲下"""
        print(f"{self.name} is now sitting.")

    def roll_over(self):
        """模拟小狗收到命令时打滚"""
        print(f"{self.name} rolled over!")


# 让python创建一条名字为'Willie'、年龄为6的小狗。
my_dog = Dog('Willie', 6)
your_dog = Dog('Lucy', 3)
my_dog.sit()
my_dog.roll_over()

# 编写了如下代码来访问my_dog的属性name和age的值;
print(f"\nMy dog's name is {my_dog.name}")
print(f"My dog is {my_dog.age} years old.")
my_dog.sit()

print(f"\nYour dog's name is {your_dog.name}.")
print(f"Your dog is {your_dog.age} years old.")
your_dog.sit()


运行结果:

Willie is now sitting.
Willie rolled over!

My dog's name is Willie
My dog is 6 years old.

Willie is now sitting.

Your dog's name is Lucy.
Your dog is 3 years old.
Lucy is now sitting.
 


9.2:使用类和实例

可使用类来模拟现实世界中的很多情景。类可执行修改实例的属性,也可编写方法来特定的方式进行修改。


9.2.1:Car 类

编写一个表示汽车的类,它存储了有关汽车的信息,还有一个汇总这些信息的方法:

class Car:
    """一次模拟汽车的简单尝试"""
    
# 定义方法,该方法还包含另外三个形参:make、model和year

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

# 定义一个名为get_descriptive_name的方法,它使用属于year、make和model创建一个对汽车进行描述的字符串;

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


# 根据Car类创建一个实例,并将其赋给变量my_new_car;

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


9.2.2 :给属性指定默认值

创建实例时,有些属性无须通过行参来定义,可在方法 __init__()中为其指定默认值;

class Car:

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

        # 添加一个名为odmeter_reading的属性,其初始值总是为0
        self.odometer_reading = 0


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

    # 定义一个名为read_odometer的方法
    def read_odometer(self):
        """打印一条指出汽车里程的消息"""
        print(f"This car has {self.odo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值