首页 > 编程语言 >python:reflection 反射

python:reflection 反射

时间:2024-11-19 21:39:54浏览次数:1  
标签:__ 反射 return reflection python self module dal import

C#面象对象的语言也有类似的反射  reflection

便于根据配置文件,方便切换数据库。切换DAL层即可。

# 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 sqlserverdal.school import SchoolDal
from sqlserverinterface.teacher import ITeacher
#from sqlserverdal.teacher import TeacherDal
from sqlserverinterface.schoolWinner import ISchoolWinner
#from sqlserverdal.schoolWinner import SchoolWinnerDal
from sqlserverinterface.studentWinner import IStudentWinner
#from sqlserverdal.studentWinner import StudentWinnerDal
from sqlserverinterface.student import IStudent
#from sqlserverdal.student import StudentDal
from sqlserverinterface.answer import IAnswer
#from sqlserverdal.answer import AnswerDal
from sqlserverinterface.question import IQuestion
#from sqlserverdal.question import QuestionDal
from sqlserverinterface.studentGrade import IStudentGrade
#from sqlserverdal.studentGrade import StudentGradeDal
from sqlserverinterface.prizeSchool import IPrizeSchool
#from sqlserverdal.prizeSchool import PrizeSchoolDal
from sqlserverinterface.prizeStudent import IPrizeStudent
#from sqlserverdal.prizeStudent import PrizeStudentDal
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


    @abstractmethod
    def createTeacher(self) -> ITeacher:
        """
        生成(创建)接口
        :return:
        """

        #dal = TeacherDal()
        module = __import__(self.__strsql + 'dal.teacher')
        dal = getattr(module, "TeacherDal")()
        return dal

    @abstractmethod
    def createSchoolWinner(self) -> ISchoolWinner:
        """
        生成(创建)接口
        :return:
        """
        #dal = SchoolWinnerDal()
        module = __import__(self.__strsql + 'dal.schoolWinner')
        dal = getattr(module, "SchoolWinnerDal")()
        return dal


    @abstractmethod
    def createStudentWinner(self) -> IStudentWinner:
        """
        生成(创建)接口
        :return:
        """
        #dal = StudentWinnerDal()
        module = __import__(self.__strsql + 'dal.studentWinner')
        dal = getattr(module, "StudentWinnerDal")()
        return dal

    @abstractmethod
    def createStudent(self) -> IStudent:
        """
        生成(创建)接口
        :return:
        """
        #dal = StudentDal()
        module = __import__(self.__strsql + 'dal.student')
        dal = getattr(module, "StudentDal")()
        return dal

    @abstractmethod
    def createAnswer(self) -> IAnswer:
        """
        生成(创建)接口
        :return:
        """
        #dal = AnswerDal()
        module = __import__(self.__strsql + 'dal.answer')
        dal = getattr(module, "AnswerDal")()
        return dal

    @abstractmethod
    def createQuestion(self) -> IQuestion:
        """
        生成(创建)接口
        :return:
        """
        #dal = QuestionDal()
        module = __import__(self.__strsql + 'dal.question')
        dal = getattr(module, "QuestionDal")()
        return dal

    @abstractmethod
    def createStudentGrade(self) -> IStudentGrade:
        """
        生成(创建)接口
        :return:
        """
        #dal = StudentGradeDal()
        module = __import__(self.__strsql + 'dal.studentGrade')
        dal = getattr(module, "StudentGradeDal")()
        return dal

    @abstractmethod
    def createPrizeSchool(self) -> IPrizeSchool:
        """
        生成(创建)接口
        :return:
        """
        #dal = PrizeSchoolDal()
        module = __import__(self.__strsql + 'dal.prizeSchool')
        dal = getattr(module, "PrizeSchoolDal")()
        return dal

    @abstractmethod
    def createPrizeStudent(self) -> IPrizeStudent:
        """
        生成(创建)接口
        :return:
        """
        #dal = PrizeStudentDal()
        module = __import__(self.__strsql + 'dal.prizeStudent')
        dal = getattr(module, "PrizeStudentDal")()
        return dal

  

 

 

标签:__,反射,return,reflection,python,self,module,dal,import
From: https://www.cnblogs.com/geovindu/p/18555670

相关文章

  • python: generator IDAL and DAL using sql server 2019
     createIDAL#encoding:utf-8#版权所有2024©涂聚文有限公司#许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎#描述:#Author:geovindu,GeovinDu涂聚文.#IDE:PyCharm2023.1python3.11#OS:windows10#Datetime:2024/......
  • Python-开发运动会计分管理软件
    PYTHON-开发运动会计分管理软件项目概述1.软件功能我们的运动会计分管理软件具有以下功能:添加运动员:提供接口让用户输入运动员的基本信息,包括分组、姓名、名次。管理分组:支持创建、修改和删除运动员分组,方便组织和查看。得分计算:根据运动员名次自动计算得分,并在用户界面中......
  • Python 时间模块(time,datetime)
    在Python中,time模块和datetime模块都与时间处理相关,但它们有着不同的特点和用途,以下为你详细介绍:一.time模块概述:time模块提供了各种与时间相关的函数,它主要围绕着时间戳(从1970年1月1日00:00:00UTC到某个时刻所经过的秒数)来进行操作,常用于获取当前时间、对时间进......
  • 解释爬虫的基本概念,以及它的作用,并讲解如何使用 Python 实现网络爬虫。
    爬虫是一种自动化程序,用于从互联网上收集数据。它通过模拟人类访问网页的行为,自动发送HTTP请求,获取网页内容,并抽取所需的数据。爬虫的作用非常广泛。它可以用于搜索引擎的网页索引,获取新闻、博客等网页内容,进行数据挖掘和分析,监测网站的变化等。Python是一种常用的编程语言......
  • 面试题--Java反射
    目录获得一个类的class对象有哪些方式?1.使用.class属性:2.使用Class.forName方法:3.通过实例的getClass方法:4.通过类加载器:5.通过数组的getClass方法:6.通过Thread.currentThread().getContextClassLoader().loadClass:7.通过Method、Constructor等类的getDeclaringClass和getReturnT......
  • Zmap+python脚本+burp实现自动化Fuzzing测试
    声明学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章。笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。✍......
  • 计算机毕设项目源代码 python基于python的旅游可视化系统
    标题: python基于python的旅游可视化系统设计一个基于Python的旅游可视化系统,可以帮助用户更好地规划旅行路线,了解目的地的详细信息,并提供丰富的互动功能。以下是一个典型的旅游可视化系统的主要功能模块:1.系统概述•目标:为用户提供一个直观、易用的旅游信息平台,帮助用户......
  • 计算机毕设源码 python-基于flask在线考试系统
    标题:python-基于flask在线考试系统设计一个基于Flask框架的在线考试系统,需要考虑考生、教师和管理员的不同需求,确保系统的易用性、公平性和安全性。以下是一个典型的在线考试系统的主要功能模块:1.用户注册与登录•注册:用户可以通过手机号码、邮箱或社交账号注册。•登录:用......
  • 计算机毕设设计项目 python基于flask框架的车联网数据库系统的构建
    标题:python基于flask框架的车联网数据库系设计一个基于Flask框架的车联网数据库系统,需要考虑车辆数据的收集、存储、分析和管理,确保系统的高效性、可靠性和扩展性。以下是一个典型的车联网数据库系统的主要功能模块:1.用户注册与登录•注册:用户可以通过手机号码、邮箱或社......
  • 计算机毕设设计项目 python基于flask的校园失物招领系统设计与实现
    标题: python基于flask的校园失物招领系统设计设计一个基于Flask框架的校园失物招领系统,需要考虑学生、教师和其他校园成员的需求,确保系统的易用性、高效性和安全性。以下是一个典型的校园失物招领系统的主要功能模块:1.用户注册与登录•注册:用户可以通过手机号码、学号/工......