python:reflection 反射

CSharp面象对象的语言也有类似的反射 reflection ,曾经近十年前自已在博客园写过。思维方式是一样的。便于根据配置文件,方便切换数据库。切换DAL层即可。

python 复制代码
# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 3.11
# OS        : windows 10
# Datetime  : 2024/11/19 20:36
# User      : geovindu
# Product   : PyCharm
# Project   : IctGame
# File      : AbstractFactory.py
# explain   : 学习
 
from __future__ import annotations
from abc import ABC, abstractmethod
import os
import sys
from sqlserverinterface.school import ISchool
from common.jsonHelper import JsonHelper
 
class AbstractFactory(ABC):
    """
    工厂方法类
    """
 
    def __init__(self):
        """
        sqlserver、mysql、postgresql
        """
        self.__strsql=self.getDal() #"postgresql"  # 可以根据配置文件,进行切换数据库如是mysql,postgreSQL,sql server
 
    def getDal(self)->str:
        """
 
        :return:
        """
        jsn = JsonHelper()
        self.__strsql = jsn.readDal()
        jsn.readDal()
        return jsn.readDal()
 
    @abstractmethod
    def createSchool(self) -> ISchool:
        """
        生成(创建)接口
        :return:
        """
        #dal = SchoolDal()
        module = __import__(self.__strsql + 'dal.school')
        dal = getattr(module, "SchoolDal")()
        return dal
 
 
相关推荐
兮动人40 分钟前
C语言之指针入门
c语言·开发语言·c语言之指针入门
ada7_1 小时前
LeetCode(python)78.子集
开发语言·数据结构·python·算法·leetcode·职场和发展
我送炭你添花1 小时前
Pelco KBD300A 模拟器:06+5.串口实现的逻辑优化、配置管理与协议完善(二次迭代)
python·运维开发
databook1 小时前
前注意加工:让你的图表抓住读者的眼球
python·数据分析·数据可视化
知行学思1 小时前
Python配置管理完全指南:从dotenv到pydantic_settings
数据库·python·fastapi·环境变量·配置管理·pydantic·dotenv
nbsaas-boot2 小时前
Go 项目中如何正确升级第三方依赖(Go Modules 实战指南)
开发语言·后端·golang
哈里谢顿2 小时前
一致性哈希介绍
架构
wadesir2 小时前
C++基本数据类型详解(零基础掌握C++核心数据类型)
java·开发语言·c++
skywalk81633 小时前
wow文件处理trinitycore的文件处理
开发语言·游戏
一路往蓝-Anbo4 小时前
STM32单线串口通讯实战(五):RTOS架构 —— 线程安全与零拷贝设计
c语言·开发语言·stm32·单片机·嵌入式硬件·观察者模式·链表