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
 
 
相关推荐
程序大视界2 小时前
【C++ 从基础到项目实战】C++(九):友元与设计模式初探——打破封装的艺术
开发语言·c++·cpp
hhb_6182 小时前
Bash变量不加引号:空格文件名致命陷阱
开发语言·chrome·bash
宸津-代码粉碎机2 小时前
Spring AI企业级RAG进阶|文档智能分片调优、ES深度整合、接口限流熔断监控生产实战
java·开发语言·人工智能·后端·spring·elasticsearch·oracle
两年半的个人练习生^_^2 小时前
JVM进阶系列:彻底理解 Java 内存模型(JMM)
java·开发语言
一个博客3 小时前
pdf-viewer 实现预览pdf文件
开发语言·javascript·pdf
一位代码3 小时前
微软开源项目MarkitDown:一款将pdf/word/ppt等各类文件转换为Markdown格式的python工具
python
在繁华处10 小时前
Java从零到熟练(四):面向对象基础
java·开发语言
Unbelievabletobe10 小时前
解决了股票api接口盘后数据更新慢的问题
大数据·开发语言·python
不会C语言的男孩11 小时前
C++ Primer 第2章:变量和基本类型
开发语言·c++
lpd_lt11 小时前
AI Coding的常用Prompt技巧
python·ai·ai编程