12、Python程序设计:python面向对象综合案例《用户管理系统》

1. 实体类 (Entity)

1实体类的代码

class User:

    def __init__(self, user_id: int, username: str, email: str):

        self.user_id = user_id

        self.username = username

        self.email = email

    def __repr__(self):

        return f"User(id={self.user_id}, username='{self.username}', email='{self.email}')"

#当你创建一个 User 对象并打印它时,__repr__方法会被自动调用:

user = User(1, "Alice", "alice@example.com")

print(user)  # 输出: User(id=1, username='Alice', email='alice@example.com')

2实体类代码的详细注释

# 定义 User 类,用于表示用户对象

class User:

    """

    用户类,包含用户的唯一标识符、用户名和电子邮件地址。

    

    Attributes:

        user_id (int): 用户的唯一标识符。

        username (str): 用户名。

        email (str): 用户的电子邮件地址。

    """

    def __init__(self, user_id: int, username: str, email: str):

        """

        初始化 User 类的新实例。

        Args:

            user_id (int): 用户的唯一标识符。

            username (str): 用户名。

            email (str): 用户的电子邮件地址。

        """

        self.user_id = user_id  # 将传入的 user_id 赋值给实例变量 user_id

        self.username = username  # 将传入的 username 赋值给实例变量 username

        self.email = email  # 将传入的 email 赋值给实例变量 email

    def __repr__(self) -> str:

        """

        返回一个可用于调试的字符串表示形式。

        Returns:

            str: 表示 User 对象的字符串,格式为 "User(id=<user_id>, username='<username>', email='<email>')".

        """

        return f"User(id={self.user_id}, username='{self.username}', email='{self.email}')"

# 示例用法:

if __name__ == "__main__":

    # 创建一个新的 User 实例

    user = User(user_id=1, username="Alice", email="alice@example.com")

    

    # 打印 User 实例,将调用 __repr__ 方法

    print(user)

3实体类代码的讲解

【1】类定义:

   - class User::定义了一个名为 User 的类。这个类用来表示系统中的用户对象,每个用户有唯一的标识符 (user_id)、用户名 (username) 和电子邮件地址 (email)。

【2】构造方法 (__init__):

   - def __init__(self, user_id: int, username: str, email: str)::这是类的构造方法,用于初始化新创建的 User 对象。它接受三个参数:

     - user_id(整数类型):用户的唯一标识符。

     - username(字符串类型):用户的用户名。

     - email(字符串类型):用户的电子邮件地址。

   - 在构造方法中,这三个参数分别赋值给实例变量 self.user_id、self.username 和 self.email,这些变量在后续使用时可以通过 self 访问。

【3】字符串表示方法 (__repr__):

   - def __repr__(self) -> str::这是一个特殊的方法,用于返回对象的“官方”字符串表示形式。当调用 print(user) 或者将对象传递给调试工具时,会调用此方法。

   - return f"User(id={self.user_id}, username='{self.username}', email='{self.email}')":返回一个格式化的字符串,包含 user_id、username 和 email 的信息。这使得调试和日志记录更加直观。

【4】示例用法:

   - if __name__ == "__main__"::这段代码确保只有在直接运行该文件时才会执行下面的代码块,而不会在导入模块时执行。

   - 创建了一个新的 User 实例,并通过 print 函数打印出来,以展示 __repr__ 方法的效果。

2. 数据访问层接口 (DAO Interface)

1数据访问层代码

'''

ABC(Abstract Base Class)和 abstractmethod 是 Python 中用于定义抽象基类及其抽象方法的工具。它们属于 abc 模块,提供了类似于Java

中接口和抽象类的功能。通过使用 ABC 和 abstractmethod,你可以确保某些类实现了特定的方法,从而提高代码的可维护性和可扩展性。

'''

from abc import ABC, abstractmethod

class UserDao(ABC):

    @abstractmethod

    def get_user_by_id(self, user_id: int) -> User:#返回值类型为User

        pass

    @abstractmethod

    def add_user(self, user: User) -> None:

        pass

    @abstractmethod

    def update_user(self, user: User) -> None:

        pass

    @abstractmethod

    def delete_user(self, user_id: int) -> None:

        pass

2数据访问层代码的详细注释

from abc import ABC, abstractmethod

from typing import Optional  # 导入 Optional 用于返回值类型的可选性(如果需要)

# 导入 User 类,假设它在同一个文件中或已经导入

# from .user import User  # 如果 User 类在另一个模块中

class UserDao(ABC):

    """

    用户数据访问对象 (User Data Access Object) 的抽象基类。

    

    这个类定义了一组接口方法,用于与用户数据存储进行交互。

    所有具体的用户数据访问实现类都必须继承自这个抽象类,并实现这些抽象方法。

    

    Attributes:

        None (这是一个抽象基类,不包含具体属性)

    """

    @abstractmethod

    def get_user_by_id(self, user_id: int) -> Optional[User]:

        """

        根据用户 ID 获取用户对象。

        Args:

            user_id (int): 用户的唯一标识符。

        Returns:

            Optional[User]: 如果找到用户,则返回对应的 User 对象;否则返回 None。

        """

        pass

    @abstractmethod

    def add_user(self, user: User) -> None:

        """

        添加一个新的用户到数据存储中。

        Args:

            user (User): 要添加的用户对象。

        Returns:

            None

        """

        pass

    @abstractmethod

    def update_user(self, user: User) -> None:

        """

        更新数据存储中的用户信息。

        Args:

            user (User): 包含更新后信息的用户对象。

        Returns:

            None

        """

        pass

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字化与智能化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值