数据库数据的表现形式

可以把一个表的记录条数看作一个对象,把所有对象放进一个列表中,把一个表的主键看做一个字典的key,记录看做值。

每一种数据结构都有其最优的使用时机。

学生表的记录

ID

学号

姓名

年龄

性别

1

08L0900

王大海

26

2

08L0901

李铁锤

34

3

08L0902

张天翼

23

student = namedtuple('student', ['ID', 'classId', 'name', 'age','gender'])

STUDENTS_DICT={'08L0900':student(1,08L0900,'王大海','26','女'),
    '08L0901':student(2,'08L0901','李铁锤','34','男'),
    '08L0902':student(3,'08L0901'),'张天翼','男'}

Tip

上面的这中组织数据的形式比较适合于数据的查找,当给一个 classId 的时候,能够很方便的找到这条记录。 适用于数据查找

STUDENTS_list=[student(1,08L0900,'王大海','26','女'),
    student(2,'08L0901','李铁锤','34','男'),
    student(3,'08L0901','张天翼','男')]

Tip

上面的这种组织数据的形式比较适合于数据的展示,能够很方便的查看数据的总数量,有哪些记录。 适用于数据展示

metaclass=Singleton

根据您的查询,您似乎想了解Python中的元类和单例模式。实际上,元类是一种高级编程概念,用于创建类的类。单例模式是一种设计模式,用于确保类只有一个实例,并提供全局访问点。

以下是一个使用元类和单例模式创建单例类的示例:

class Singleton(type):
    _instances = {}

    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super().__call__(*args, **kwargs)
        return cls._instances[cls]

class MyClass(metaclass=Singleton):
    def __init__(self, name):
        self.name = name

# 创建两个实例
a = MyClass('Instance A')
b = MyClass('Instance B')

# 输出实例名称
print(a.name)    # 输出“Instance A”
print(b.name)    # 输出“Instance A”

在此示例中,我们首先定义了一个名为Singleton的元类,

该元类包含一个名为 _instances 的类变量,该变量用于存储类的实例。

然后,我们定义了一个名为 MyClass``的类,并将  ``Singleton``元类分配给它的  ``metaclass 属性。

这将确保 MyClass 只有一个实例,并且该实例可以通过全局访问点访问。

接下来,我们创建了两个 MyClass 实例a和b,并将它们分别命名为 “Instance A”和“Instance B”。

由于 MyClass``是单例类,因此a和b实际上是同一个实例。最后,我们使用  ``print() 函数输出每个实例的名称,以证明它们是相同的。

设计模式

单例模式是一种常见的设计模式,用于确保类只有一个实例,并提供全局访问点。

除了单例模式之外,还有许多其他设计模式可用于解决不同类型的问题。

模式名称

解释

工厂模式

用于将对象的创建过程封装在一个单独的工厂类中。这可以使代码更加模块化和可维护,并提供更好的灵活性和可扩展性。

观察者模式

用于在对象之间建立一对多的依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。

适配器模式

用于将一个类的接口转换为另一个类的接口。这可以使不兼容的类能够一起工作,并提供更好的灵活性和可扩展性。

策略模式

用于在运行时选择算法的不同实现。这可以使代码更加灵活和可扩展,并提供更好的性能和可维护性。

装饰器模式

用于动态地添加或修改对象的行为。这可以使代码更加灵活和可扩展,并提供更好的性能和可维护性。

单例模式

用于确保类只有一个实例,并提供全局访问点。