python利用什么写模板_分享一个写小demo用的python模板

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""Python Demo Template.

notes:

- log file will be created in CWD

tips:

- itertools and operator may simplify sort and iterate

- sqlite3 may be helpful for your housekeeping file format

"""

import argparse

import logging

import logging.config

def main():

# all of command line arguments should be added here

parser = argparse.ArgumentParser(description='Python Demo Template')

parser.add_argument('infile', nargs='?', type=argparse.FileType('r'),

default='-', help='text source [default: sys.stdin]')

parser.add_argument("-v", "--verbose", action="count", default=0,

help="increase output verbosity")

args = parser.parse_args()

# runtime services: logging

env_init(args.verbose)

# main logic begins

for line in args.infile:

logging.info(line.rstrip())

def env_init(verbose):

# logging facility, only loglevel can be changed

if verbose >= 2:

loglevel = logging.DEBUG

elif verbose >= 1:

loglevel = logging.INFO

else:

loglevel = logging.WARNING

LOGGING = {

'version': 1,

'formatters': {

'simple': {

'format': '%(levelname)s %(message)s'

},

'verbose': {

'format': ('%(levelname)s %(asctime)s %(module)s '

'%(process)d %(thread)d %(message)s')

},

},

'handlers': {

'console': {

'level': 'DEBUG',

'class': 'logging.StreamHandler',

'formatter': 'simple'

},

'file': {

'level': 'INFO',

'class': 'logging.handlers.RotatingFileHandler',

'formatter': 'verbose',

'filename': 'app.log',

'maxBytes': 10*1024*1024,

'backupCount': 5

},

},

'root': {

'level': loglevel,

'handlers': ['console', 'file']

},

}

logging.config.dictConfig(LOGGING)

if __name__ == '__main__':

main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我完全理解您的要求,以下是一个Python 实现的模板方法模式的示例代码: ``` # 定义一个抽象类 from abc import ABCMeta, abstractmethod class AbstractClass(metaclass=ABCMeta): # 定义一个模板方法,该方法中调用了抽象方法 def template_method(self): self.__specific_method1() self.__abstract_method() self.__specific_method2() # 定义一个具体方法,该方法已有具体实现 def __specific_method1(self): print("Specific method 1 implemented in Abstract Class") # 定义一个具体方法,该方法已有具体实现 def __specific_method2(self): print("Specific method 2 implemented in Abstract Class") # 定义一个抽象方法,该方法在子类中必须实现 @abstractmethod def __abstract_method(self): pass # 定义一个具体类,该类实现了抽象方法 class ConcreteClass(AbstractClass): # 实现抽象方法 def __abstract_method(self): print("Abstract method implemented in Concrete Class") # 测试 if __name__ == '__main__': concrete_class = ConcreteClass() concrete_class.template_method() ``` 在上述代码中,AbstractClass 是模板类,它定义了一个模板方法 template_method(),该方法中调用了两个具体方法:__specific_method1() 和 __specific_method2(),同时还调用了一个名为__abstract_method()的抽象方法。抽象方法在 AbstractClass 中没有具体实现,因此需要在子类中实现。 ConcreteClass 是一个具体实现类,它继承了 AbstractClass 并实现了抽象方法__abstract_method()。当 ConcreteClass 调用 template_method() 时,会执行 AbstractClass 中定义的具体方法,并且会执行 ConcreteClass 中实现的抽象方法。 需要注意的是,模板方法模式是一种行为设计模式,它可以让程序员在不改变算法结构情况下修改算法中的某些步骤。该模式的核心思想是将算法的不同部分分离出来,形成一个结构清晰、易于扩展的代码框架。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值