19、Python:面向对象编程:对象的创建与操作

Python作为一门面向对象的编程语言,提供了丰富的特性来支持对象的创建与操作。本文将详细介绍如何在Python中实例化对象、访问其属性与方法,以及如何利用特殊方法来增强对象的功能。

1. 对象的实例化

构造函数 __init__

构造函数__init__是一个特殊的方法,用于在创建类的新实例时初始化对象的状态。

class Car:
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model
创建类的实例

要创建一个类的实例,只需调用类名并传递所需的参数。

my_car = Car('Toyota', 'Corolla')

2. 对象的属性与方法

访问属性

对象的属性可以通过点.操作符来访问。

print(my_car.brand)  # 输出: Toyota
调用方法

对象的方法也可以通过点.操作符来调用。

class Car:
    # ... (前面的代码)
    def display_info(self):
        print(f'This car is a {self.brand} {self.model}.')

my_car.display_info()  # 输出: This car is a Toyota Corolla.

3. 对象的特殊方法

__str____repr__

__str____repr__是两个用于定义对象的“官方”和“非官方”字符串表示的特殊方法。

class Car:
    # ... (前面的代码)
    def __str__(self):
        return f'{self.brand} {self.model}'
    
    def __repr__(self):
        return f'Car(brand="{self.brand}", model="{self.model}")'

my_car = Car('Toyota', 'Corolla')
print(my_car)  # 输出: Toyota Corolla
print(repr(my_car))  # 输出: Car(brand="Toyota", model="Corolla")
运算符重载

运算符重载允许我们定义操作符(如+-等)对类实例的行为。

class Car:
    # ... (前面的代码)
    def __add__(self, other):
        return f'{self.model} and {other.model} are both {self.brand} cars.'

car1 = Car('Toyota', 'Corolla')
car2 = Car('Toyota', 'Camry')
print(car1 + car2)  # 输出: Corolla and Camry are both Toyota cars.
完整的例子:
# 定义一个名为Car的类,代表汽车对象
class Car:
    # 构造函数 __init__ 用于在创建类的实例时初始化对象的属性
    def __init__(self, brand, model):
        self.brand = brand  # 实例属性 brand,表示汽车品牌
        self.model = model  # 实例属性 model,表示汽车型号

    # 实例方法 display_info 用于打印汽车的信息
    def display_info(self):
        # 使用f-string格式化字符串,包含品牌和型号信息
        print(f'This car is a {self.brand} {self.model}.')

    # 特殊方法 __str__ 定义对象的字符串表示,当使用print打印对象时调用
    def __str__(self):
        # 返回汽车品牌和型号的字符串表示
        return f'{self.brand} {self.model}'
    
    # 特殊方法 __repr__ 定义对象的“官方”字符串表示,通常用于调试
    def __repr__(self):
        # 返回创建这个对象的Python表达式字符串
        return f'Car(brand="{self.brand}", model="{self.model}")'

    # 特殊方法 __add__ 用于定义两个Car类实例相加时的行为
    def __add__(self, other):
        # 检查另一个对象是否也是Car类的实例
        if isinstance(other, Car):
            # 返回两个汽车型号的组合字符串
            return f'{self.model} and {other.model} are both {self.brand} cars.'
        else:
            # 如果另一个对象不是Car类的实例,抛出TypeError
            raise TypeError('Both objects must be Car instances to add them.')

# 创建Car类的实例 my_car,传递品牌和型号作为参数
my_car = Car('Toyota', 'Corolla')
# 调用实例方法 display_info 打印汽车信息
my_car.display_info()  # 输出: This car is a Toyota Corolla.

# 使用print函数打印 my_car 对象,会调用 __str__ 方法
print(my_car)  # 输出: Toyota Corolla
# 使用repr函数打印 my_car 对象的“官方”字符串表示,会调用 __repr__ 方法
print(repr(my_car))  # 输出: Car(brand="Toyota", model="Corolla")

# 创建另一个Car类的实例 another_car
another_car = Car('Toyota', 'Camry')
# 使用 + 运算符将 my_car 和 another_car 相加,会调用 __add__ 方法
print(my_car + another_car)  # 输出: Corolla and Camry are both Toyota cars.

以上代码展示了如何在Python中定义类、创建对象、访问属性、调用方法以及使用特殊方法。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值