cls

记录一下常考的Python面试题

谁说我不能喝 提交于 2020-01-28 10:29:52
Python实现单例模式?什么是单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息。如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪费内存资源,尤其是在配置文件内容很多的情况下。事实上,类似 AppConfig 这样的类,我们希望在程序运行期间只存在一个实例对象。 #实现单例模式的几种方式: #方法一 使用new方法 class Singleton ( object ) : def __new__ ( cls , * args , ** kw ) : if not hasattr ( cls , '_instance' ) : orig = super ( Singleton , cls ) cls . _instance = orig . __new__ ( cls , * args , ** kw ) return cls . _instance class MyClass (

面向对象--实现单例模式

主宰稳场 提交于 2020-01-27 02:04:44
1.定义 一个类只能创建一个对象 为什么使用单例模式: 对于系统中的某些类来说,只有一个实例重要,比如:Windows中只能打开一个任务管理器。如果不使用单例模式,将会弹出多个任务管理器窗口,若显示的内容完全一致,则显示对象重复,浪费内存资源;若显示的内容不一致,则表示在这一瞬间系统有多个状态,与实际不符,也会给用户带来误解。因此确保系统中某个对象的唯一性很重要。 2.实现单例模式的三种方式 (1)装饰器实现单例模式 #装饰器实现单例模式 from functools import wraps def singleton ( cls ) : instances = { } #key是类名,value是对象名 @wraps ( cls ) def wrapper ( * args , ** kwargs ) : name = cls . __name__ #获取类的名字 if instances . get ( name ) : return instances . get ( name ) #直接返回缓存中的对象 else : obj = cls ( * args , ** kwargs ) instances [ name ] = obj return obj return wrapper @singleton class Person ( object ) : pass if

面向对象—04实现单例模式

别说谁变了你拦得住时间么 提交于 2020-01-26 00:57:24
单例模式 1、定义 一个类只能创建一个对象 为什么要使用单例模式: 对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务, 但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有 一个计时工具或ID(序号)生成器。如在Windows中就只能打开一个任务管理器。如果不使用机制 对窗口对象进行唯一化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象, 浪费内存资源;如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际 不符,也会给用户带来误解,不知道哪一个才是真实的状态。因此有时确保系统中某个对象的唯 一性即一个类只能有一个实例非常重要 2、实现单例模式的三种方法 (1)装饰器实现单例模式 (2)__ new __魔术方法实现 (3)metaclass自定义元类实现 """ (1)装饰器实现单例模式 """ from functools import wraps # 用装饰器来装饰类 def singleton ( cls ) : instances = { } # {Person : obj} key值是类名 , value值是对象名 @wraps ( cls ) def wrapper ( * args , ** kwargs ) : if instances . get ( cls . _

增量学习实例

て烟熏妆下的殇ゞ 提交于 2020-01-25 23:16:10
原理请参考url https://blog.csdn.net/suzyu12345/article/details/81461667 https://blog.csdn.net/whiterbear/article/details/53120004 增量学习有几点需要注意: 1.不是所有模型都支持增量学习,参考:https://scikit-learn.org/stable/auto_examples/applications/plot_out_of_core_classification.html 2. fit 与 partial_fit函数的区别需要注意:可以fit,然后partfit;如果没有fit过程,直接进行partialfit,需要加参数指定分类结果:GaussianNB2.partial_fit(train[:,:3], train[:,3],classes=np.unique(train[:,3])) 代码示例: import pandas as pd #导入数据分析库 import logging from random import shuffle #导入随机函数shuffle,用来打算数据 import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeClassifier from

python面向对象day3

只谈情不闲聊 提交于 2020-01-25 16:47:21
1.了解 new ()方法 1 . 作用 : 开辟对象的内存空间 , 默认每次新建对象自动调用 __new__ 方法从而开辟对象空间 class 类名 ( object ) : # 重写__new__方法, 实现自己定义的创建对象的方式 def __new__ ( cls , * args , ** kwargs ) : return super ( ) . __new__ ( cls ) 2 . 调用时机 __new__ : 先被调用 __init__ : 后调用 2.单例模式 1 . 什么是单例模式 : 一个类有且只能创建一个对象空间 , 目的是为了节约内存资源 例如 : 回收站 ( 数据库操作类 ) , 只需要一个对象就能完成所有的功能 , 没有必要创建多个对象浪费内存资源 . 2 . 实现单例模式 class Singleton ( object ) : # 类属性 __instance = None __isinit = False # 是否初始化 # 重写__new__方法 def __new__ ( cls , * args , ** kwargs ) : if cls . __instance is None : # 创建对象空间 cls . __instance = super ( ) . __new__ ( cls ) # 无论如何都返回对象空间 return

Springboot如何集成swagger

落爺英雄遲暮 提交于 2020-01-25 11:10:18
转自: http://www.leftso.com/blog/223.html 现在微服务已经有了很大的发展势头。微服务中常用的接口方式就是Restful风格,实际的REST规范并没有建议使用任何标准的方法来记录我们将要公开的REST api(就像SOAP的WSDL)。因此,每个人都在用自己的方式记录他们的api,这导致了通用结构上的一个缺陷,为了解决这个问题,出现了swagger,根据swagger生成的接口文档,所有人都可以很容易地理解并进行使用相应的接口。 我们将首先创建一些REST api接口,这些api接口将用于演示Swagger的文档功能。我们将使用Spring boot风格来显示rest API,以获得更快的开发时间。 1、创建spring boot项目 可以去spring boot官网创建一个web带Rest接口依赖的spring boot项目,也可以用idea工具创建。(如果) 2、修改application.properties配置文件。 添加以下属性。项目将会从 /swagger2-demo context 路径启动应用. 3、添加一个REST的contrller和实体类 创建类 Swagger2DemoRestController,他将会 为学生实体提供基本的基于REST的功能。 package com.testswagger.controller;

C语言实现——学生管理系统1.0版

南楼画角 提交于 2020-01-25 08:31:03
刚学完C语言,尝试着用C语言写一个小项目用来练练手,若有不足之处,欢迎各方大佬多多指点! 定义结构体 # include <stdio.h> # include <stdlib.h> # include <string.h> typedef struct node { char ID [ 20 ] ; //学号 char name [ 9 ] ; //姓名 char sex ; //性别 int age ; //年龄 char nation [ 9 ] ; //民族 struct node * next ; } node , * pnode ; 函数声明 void error_allot ( pnode q ) ; //辅助函数:内存分配失败 pnode init ( void ) ; //操作函数:初始化 void quit ( int n ) ; //辅助函数:1.选择时输入规则以外的数 2.返回系统 void end_error ( int n ) ; //辅助函数:操作成功和查询无果以及返回系统 pnode insert ( pnode q , int b [ 1 ] ) ; //操作函数:录入学生信息 void traverse ( pnode p ) ; //输出函数:显示学生信息列表 pnode get ( pnode q , pnode * per , int n

iOS 组件化方案探索

对着背影说爱祢 提交于 2020-01-24 21:24:35
看了 Limboy( 文章1 文章2 ) 和 Casa ( 文章 ) 对 iOS 组件化方案的讨论,写篇文章梳理下思路。 首先我觉得”组件”在这里不太合适,因为按我理解组件是指比较小的功能块,这些组件不需要多少组件间通信,没什么依赖,也就不需要做什么其他处理,面向对象就能搞定。而这里提到的是较大粒度的业务功能,我们习惯称为”模块”。为了方便表述,下面模块和组件代表同一个意思,都是指较大粒度的业务模块。 一个 APP 有多个模块,模块之间会通信,互相调用,例如微信读书有 书籍详情 想法列表 阅读器 发现卡片 等等模块,这些模块会互相调用,例如 书籍详情要调起阅读器和想法列表,阅读器要调起想法列表和书籍详情,等等,一般我们是怎样调用呢,以阅读器为例,会这样写: #import "WRBookDetailViewController.h" #import "WRReviewViewController.h" @implementation WRReadingViewController + (void)gotoDetail { WRBookDetailViewController *detailVC = [[WRBookDetailViewController alloc] initWithBookId:self.bookId]; [self.navigationController

iOS 组件化方案探索

≡放荡痞女 提交于 2020-01-23 14:40:05
首先我觉得”组件”在这里不太合适,因为按我理解组件是指比较小的功能块,这些组件不需要多少组件间通信,没什么依赖,也就不需要做什么其他处理,面向对象就能搞定。而这里提到的是较大粒度的业务功能,我们习惯称为”模块”。为了方便表述,下面模块和组件代表同一个意思,都是指较大粒度的业务模块。 一个 APP 有多个模块,模块之间会通信,互相调用,例如微信读书有 书籍详情 想法列表 阅读器 发现卡片 等等模块,这些模块会互相调用,例如 书籍详情要调起阅读器和想法列表,阅读器要调起想法列表和书籍详情,等等,一般我们是怎样调用呢,以阅读器为例,会这样写: #import "WRBookDetailViewController.h" #import "WRReviewViewController.h" @implementation WRReadingViewController + (void)gotoDetail { WRBookDetailViewController *detailVC = [[WRBookDetailViewController alloc] initWithBookId:self.bookId]; [self.navigationController.pushViewController:detailVC animated:YES]; } + (void

手写Spring之DI依赖注入

混江龙づ霸主 提交于 2020-01-22 05:44:27
之前写过了spring的IOC实现方式,现在则写DI依赖注入的实现方式 贴类图 由于在实现完DI进行测试的时候,会用到junit包,所以在pom.xml导入依赖 < ! -- SpringDI -- > < dependency > < groupId > junit < / groupId > < artifactId > junit < / artifactId > < version > 4.13 - beta - 3 < / version > < scope > compile < / scope > < / dependency > 接下来开始写,先创建几个需要的注解 package com . spring . DI . annotation ; import java . lang . annotation . ElementType ; import java . lang . annotation . Retention ; import java . lang . annotation . RetentionPolicy ; import java . lang . annotation . Target ; @Target ( ElementType . FIELD ) @Retention ( RetentionPolicy . RUNTIME )