10.1、python类与实例的创建

本文介绍了Python中如何创建和使用类。首先讲解了如何创建Dog类,包括_ _init_ _方法,阐述了self参数的作用以及如何通过实例访问属性。接着,通过创建实例展示了如何根据类来设定属性和调用方法。最后,讨论了如何给属性设置默认值以及如何修改属性值,包括直接修改和通过方法修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:类将函数和数据整洁地封装起来,让你能够灵活而高效地使用它们。

1、创建和使用类:

1.1、创建Dog类:

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) 

print(" My dog's name is " + my_dog.name.title() + ".") 

print(" My dog is " + str( my_dog.age) + " years old.")

在定义类时,根据约定在Python中,首字母大写的名称指的是

""" """表示_文档字符串_。

1、方法_ _ init _ _()

类中的函数,我们称之为方法

  • __init__()是一个特殊的方法,每当根据Dog类调用新实例时,Python都会自动运行它。开头和末尾的两个下划线,是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。
  • 形 参: self 、name 和 age中,形参self必不可少必须在其他形参前面
    • 原因:因 为 Python 调 用 这 个__init__() 方 法 来 创 建 Dog 实 例 时, 将 自 动 传 入 实 参 self 。
    • 每 个 与 类 相 关 联 的 方 法 调 用 都 自 动 传 递 实 参 self ,它 是 一 个 指 向 实 例 本 身 的 引 用, 让 实 例 能 够 访 问 类 中 的 属 性 和 方 法。
  • self.name = nameself.age = age获取存储在形参name、age中的值,并将其存储在变量name中,然后该变量被关联到当前创建的实例。
    • 以self为前缀的变量都可供类中所有的方法使用,我们还可以通过来的任何实例来访问这些变量。
    • 可通过实例访问的变量称为属性。如:name、age
  • 上例中,sit()roll_over()统称为方法。

1.2、根据类创建实例:

可将类视为有关如何创建实例的说明。

class Dog():
    --snip-- 
    
    
❶ my_dog = Dog(' willie', 6)print(" My dog's name is " + my_dog.name.title() + ".")print(" My dog is " + str( my_dog.age) + " years old.")

  • 方 法__init__() 创 建 一 个 表 示 特 定 小 狗 的 示 例, 并 使 用 我 们 提 供 的 值 来 设 置 属 性 name 和 age 。方 法__init__() 并 未 显 式 地 包 含 return 语 句, 但 Python 自 动 返 回 一 个 表 示 这 条 小 狗 的 实 例。
  • 创建实例my_dog = Dog('willie',6)
  • 访问属性my_dog.name
  • 调用方法my_dog.sit()my_dog.roll_over()

2、使用类和实例:

class Car(): 
    """ 一 次 模 拟 汽 车 的 简 单 尝 试"""def __init__( self, make, model, year): 
    """ 初 始 化 描 述 汽 车 的 属 性""" 
    self.make = make
    self.model = model
    self.year = year 
    self.odometer_reading = 0def 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) + " mile on it.")

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

2.1、给属性指定默认值:

上例中:self.odometer_reading = 0

2.2、修改属性的值:
  1. 直接修改属性的值:

    class Car():
        --snip-- 
        
        
    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()
    
    #输出结果:
    2016 Audi A4 
    This car has 23 miles on it.
    
    
  2. 通过方法修改属性的值:

    class Car():
        --snip--def update_odometer( self, mileage):
           """
           将 里 程 表 读 数 设 置 为 指 定 的 值
           禁 止 将 里 程 表 读 数 往 回 调 
           """ 
        	if mileage > = self.odometer_reading: 
                self.odometer_reading = mileage 
            else:print(" You can't roll back an odometer!")
    
    my_new_car = Car(' audi', 'a4', 2016) 
    print( my_new_car.get_descriptive_name())
    
    ❷ my_new_car.update_odometer(23) 
    my_new_car.read_odometer()
    
    
  3. 通过方法对属性的值进行递增:

    class Car():
        --snip--
        def update_odometer( self, mileage):
            --snip--def increment_odometer( self, miles): 
            """ 将 里 程 表 读 数 增 加 指 定 的 量""" 
            self.odometer_reading + = miles 
            
    ❷ my_used_car = Car(' subaru', 'outback', 2013)
    print( my_used_car.get_descriptive_name())
    
    ❸ my_used_car.update_odometer( 23500) 
    my_used_car.read_odometer()
    
    ❹ my_used_car.increment_odometer( 100) 
    my_used_car.read_odometer()
    
    #输出结果:
    2013 Subaru Outback
    This car has 23500 miles on it.
    This car has 23600 miles on it.
    
    

本章代码示例来自:[美] Eric Matthes. Python编程:从入门到实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值