Python(第五章)面向对象

目录

一、基本概念

二、基本要素

1、定义类

2、创建对象 

3、继承

4、多态 

5、封装


一、基本概念

面向对象编程 (Object-Oriented Programming, OOP) 是一种非常强大的编程方式,它允许你以更加结构化和模块化的方式来组织代码。

二、基本要素

1、定义类

类是具有相同属性和方法的对象的模板。你可以使用 class 关键字来定义一个类。
基本语法及示例
# class 类名:
# 示例:
class Person:
    # __init__ 方法,这是在类中使用的一个特殊方法。当从一个类创建对象时,这个方法会被自动调用,通常用于初始化类的属性。
    # self 是一个指向实例本身的引用,它允许你访问和修改对象的属性和方法。当你定义一个类的方法时,
    # self 参数总是作为第一个参数出现,尽管你不需要显式地传递它。当你调用方法时,Python 会自动将对象本身作为 self 参数传递。
    # 在 __init__ 方法中,self 用来引用新创建的对象,并通过 self 访问和设置对象的属性。
    def __init__(self, name, age):
        self.name = name
        self.age = age


    def display(self):
        print(f"Name: {self.name}, Age: {self.age}")

2、创建对象 

创建对象的过程也称为实例化。
# 基本语法及示例
# 对象名 = 类名(或类名.方法名).(参数)
# 示例:
person1 = Person("张三", 30)
person1.display()  # 输出: Name: 张三, Age: 30

3、继承

继承允许你创建一个新类,它继承了现有类的属性和方法。这有助于代码的复用。
# 示例:
class Employee(Person):
    def __init__(self, name, age, position):
# super() 函数用于调用父类(基类)的方法。
# super() 的用途:
# 调用父类构造函数:
# 当你在子类中重写构造函数 (__init__) 时,使用 super() 可以确保父类的构造函数也被正确调用。
# 调用父类的方法:
# 当你在子类中重写一个方法时,使用 super() 可以调用父类中相应的方法。
        super().__init__(name, age) #调用了父类的构造函数
        self.position = position

    def display(self):
        super().display() #调用父类的方法
        print(f"Position: {self.position}")

4、多态 

多态意味着不同类的对象可以对同一消息做出响应。这意味着即使对象属于不同的类,也可以使用相同的接口。
# 示例:
class Manager(Employee):
    def display(self):
        super().display() #调用父类(Employee)的方法
        print("Manager")

# 使用相同的 display 方法
person1 = Person("张三", 30)
manager1 = Manager("李四", 40, "部门经理")

person1.display()  # 输出: Name: 张三, Age: 30
manager1.display()  # 输出: Name: 李四, Age: 40, Position: 部门经理, Manager

5、封装

封装是将对象的状态和行为隐藏起来,只暴露必要的接口给外部代码。
# 示例:
# 使用私有属性:在 Python 中,没有真正的私有成员,但可以通过约定来模拟私有属性。通常,属性名前加一个下划线 _ 表示这是一个受保护的成员,而两个下划线 __ 表示这是一个私有成员。
# 使用 getter 和 setter 方法:提供公共方法来访问和修改私有属性。
# 使用属性装饰器:Python 提供了 @property 装饰器来方便地实现 getter 和 setter 方法。
# 示例:
class BankAccount:
    def __init__(self, balance=0):
        self.__balance = balance

    def deposit(self, amount):
        if amount > 0:
            self.__balance += amount

    def withdraw(self, amount):
        if 0 < amount <= self.__balance:
            self.__balance -= amount

    def get_balance(self):
        return self.__balance
# 使用@property实现 getter 和 setter 方法。
class BankAccount:
    def __init__(self, initial_balance=0):
        self._balance = initial_balance

    @property
    def balance(self):
        """Getter for balance."""
        return self._balance

    @balance.setter
    def balance(self, value):
        """Setter for balance."""
        if value >= 0:
            self._balance = value
        else:
            raise ValueError("Balance cannot be negative.")

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值