cls

【爬虫学习笔记day56】6.6. scrapy-redis的官方文档源码分析参考:Scheduler

回眸只為那壹抹淺笑 提交于 2020-02-08 09:25:31
文章目录 6.6. scrapy-redis的官方文档源码分析参考:Scheduler TODO: add SCRAPY_JOB support. 6.6. scrapy-redis的官方文档源码分析参考:Scheduler scheduler.py 此扩展是对scrapy中自带的scheduler的替代(在settings的SCHEDULER变量中指出),正是利用此扩展实现crawler的分布式调度。其利用的数据结构来自于queue中实现的数据结构。 scrapy-redis所实现的两种分布式:爬虫分布式以及item处理分布式就是由模块scheduler和模块pipelines实现。上述其它模块作为为二者辅助的功能模块 import importlib import six from scrapy.utils.misc import load_object from . import connection TODO: add SCRAPY_JOB support. class Scheduler(object): “”“Redis-based scheduler”"" def __init__(self, server, persist=False, flush_on_start=False, queue_key='%(spider)s:requests', queue_cls=

Python 闭包和__call__详解及开发实践

。_饼干妹妹 提交于 2020-02-07 23:31:57
背景 最近在使用 wtform 做后台的表单验证时候,跟很多框架使用的方法一样,它是结合ORM的对象提供校验, wtform 默认提供了不少的校验器,但是有的字段需要自己编写一些业务相关的校验器。 自定义的每个校验器的特点都是接受两个参数,form, field。 所以我们自己自定义校验器,校验器都必须是可调用对象即可,即函数,对象方法,都可以的。 比如function url_validate(form, field) 我们可以使用下面几种方式来实现 使用函数定制 def my_length_check ( form , field ) : if len ( field . data ) > 50 : raise ValidationError ( 'Field must be less than 50 characters' ) class MyForm ( Form ) : name = StringField ( 'Name' , [ InputRequired ( ) , my_length_check ] ) 上面提供一个my_length_check()函数,用于验证name长达是否长于50个字符。 这个函数按照规定接受两个参数,form, field,然后就可以根据两个参数进行判断。 这样做是可以的,但是问题是: 如果我想自定义错误信息怎么办?而且里面的限制是50,

JS DOM属性,包括固有属性和自定义属性,以及属性获取、移除和设置

ぃ、小莉子 提交于 2020-02-07 21:59:15
属性分为固有属性property和自定义属性attribute 固有属性查看 固有属性可以通过ele.property 来获取,自定义属性不行 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> body{ width:100%; height:100%; } </style> <script src="DomReady.js"></script> <script> myReady(function(){ var input=document.querySelector("input"); console.log(input.type);//text console.log(input.value);//txt console.log(input.a);//undefined console.log(input.title);//"" }); </script> </head> <body> <input type="text" value="txt" a="b"> </body> </html> .attributes 返回类数组,获取所有属性,包括自定义属性和固有属性 如果定义了同名属性,后面的属性会被忽略 如果自定义属性时出现了大写

Python中的@classmethod

好久不见. 提交于 2020-02-04 14:12:39
1.@classmethod 是一个函数修饰符,它表示接下来的是一个类方法,而对于平常我们见到的则叫做实例方法。 类方法的第一个参数cls,而实例方法的第一个参数是self,表示该类的一个实例。 2.普通对象方法至少需要一个self参数,代表类对象实例 3.类方法有类变量cls传入,从而可以用cls做一些相关的处理。并且有子类继承时,调用该类方法时,传入的类变量cls是子类,而非父类。 对于类方法,可以通过类来调用,就像C.f(),有点类似C++中的静态方法, 也可以通过类的一个实例来调用,就像C().f(),这里C(),写成这样之后它就是类的一个实例了。 所以我们在写类的方法的时候如果要传2个参数,在类中定义方法的时候要写三个加一个cls或self其中cls可以点出用@classmethod的方法,self可以点出未用@classmethod方法 来源: https://www.cnblogs.com/jie123/p/5508569.html

一个用来偷wifi密码的软件

旧城冷巷雨未停 提交于 2020-02-01 19:58:51
今天看到这篇本地wifi密码获取的文章 https://www.52pojie.cn/thread-632199-1-1.html 于是想起了我曾经编写的“wifi密码窃取器”这个程序大致是“发给别人让他运行,然后他的wifi密码就能发回到你搭建的ftp服务器(也可以放进优盘或者制作badusb,然后把优盘丢到想蹭网的人家门口,等他捡到后插电脑上运行)”,给大家分享一下。 程序原理是在运行程序后,利用 netsh wlan export profile key=clear folder=c:\ 命令将本地的密码导出,然后打包发给黑客搭建的ftp服务器 工作原理: 1.程序运行后,从指定ftp服务器“123.123.123.123”上下载7z.exe和7z.dll,一会打包密码用 2.获取密码,使用7z.exe和7z.dll打包压缩。 3.把压缩包发回ftp 这个程序是一个bat批处理程序,能够在win7下运行,将下面的代码保存为“笔记本性能优化【第一次使用可能运行时间稍长】.bat”(伪装成笔记本性能优化软件)的批处理程序即可。 下面是代码(里面的123.123.123.13修改为自己的ftp的地址,ftp用户名写自己的ftp用户名,ftp密码写自己的ftp密码,提前把7z.exe和7z.dll放到ftp根目录): [ColdFusion] 纯文本查看 复制代码 ? 01 02

操作class属性的新API--classList

家住魔仙堡 提交于 2020-02-01 07:36:56
操作class是前端开发中经常需要用到的,尤其在分工细的公司。class几乎是JS工程师与页面构建师的桥梁。几乎所有的流行库都提供了class属性操作的几个方法。如 addClass/removeClass/toggleClass/hasClass。 现在HTML5提供了 classList API,除了IE(包括IE9/10),其它现代浏览器均支持该属性。重写了下class属性模块。 1 domClass.has(el, cls) 2 domClass.add(el, cls) 3 domClass.remove(el, cls) 4 domClass.toggle(el, cls) 5 domClass.replace(el, oldCls, newCls) HTML5 classList API dom-class.js 来源: https://www.cnblogs.com/snandy/archive/2011/11/16/2251242.html

paddle实现AlexNet

ⅰ亾dé卋堺 提交于 2020-01-31 04:04:00
AlexNet结构 及 pytorch、tensorflow、keras、paddle实现ImageNet识别 环境 python3.6, paddlepaddle-gpu 1.6.3.post107 代码 # -*- coding: utf-8 -*- # @Time : 2020/1/21 11:18 # @Author : Zhao HL # @File : alexnet-paddle.py import os, sys from PIL import Image import numpy as np import pandas as pd import paddle from paddle import fluid from paddle.fluid.layers import data, conv2d, pool2d, flatten, fc, cross_entropy, accuracy, mean from my_utils import process_show, draw_loss_acc # region parameters # region paths Data_path = "./data/my_imagenet" Data_csv_path = "./data/my_imagenet.csv" Model_path = 'model/' Model

python 08属性和方法

落爺英雄遲暮 提交于 2020-01-30 19:00:44
私有属性:在属性名前加__,外部无法访问。私有属性都在init中添加。 私有方法:在方法名前加__. 类属性:直接在类中创建的属性就叫类属性。 实例属性(对象属性):在init方法中定义的属性。 注:可以使用类名、实例名访问类属性,但只能使用实例名访问实例属性,不能使用类名访问实例属性。 类方法:是类对象所拥有的⽅法,需要⽤修饰器 @classmethod 来标识其为类⽅法,第⼀个参数必须是类对象,⼀般以 cls 作为第⼀个参数。类方法可以修改类属性,获取类属性。 静态方法:使用@staticmethod,通过类直接调用,不需要创建对象。 class Person(object): #私有属性 type = "yellow" #对象方法 def __init(self): #实例属性 self.name = "tom" # 对象方法 def show(self): print("对象") #类方法 @classmethod def show_msg(cls): print(cls) print("类方法") #使用类方法修改类属性 @classmethod def self_type(cls,type): cls.type = type # 使用类方法获取类属性 @classmethod def get(cls): return cls.type #静态方法

有没有简单优雅的方法来定义单例? [重复]

ぐ巨炮叔叔 提交于 2020-01-30 16:56:15
这个问题已经在这里有了答案 : 在 Python 中创建单例 (22个答案) 去年 关闭。 似乎有很多方法可以在Python中定义 单例 。 关于堆栈溢出是否有共识? #1楼 Python文档 确实涵盖了这一点: class Singleton (object): def __new__(cls, *args, **kwds): it = cls.__dict__.get("__it__") if it is not None: return it cls.__it__ = it = object.__new__(cls) it.init(*args, **kwds) return it def init(self, *args, **kwds): pass 我可能会重写它,使其看起来像这样: class Singleton(object): """Use to create a singleton""" def __new__(cls, *args, **kwds): """ >>> s = Singleton() >>> p = Singleton() >>> id(s) == id(p) True """ self = "__self__" if not hasattr(cls, self): instance = object.__new__(cls) instance

单例模式

若如初见. 提交于 2020-01-29 04:30:41
(一)、单例模式 设计模式:基于类做的一些设计,以此来实现数据封装的管理 单例模式:最常见的一种设计模式,经常被考到(单例模式:一个类只能生成一个实例) #单例模式的本质:做实例化的时候,判断有没有类变量_instance, 如果没有,生成一个Singleton的父类对象object的实例,赋值给_instance(只会做一次),返回cls._instance 如果有这个_instance类变量,直接返回cls._instance (或者本质这样理解:通过__new__的if判断逻辑,判断是否生成过实例地址,如果没生成,生成一个,生成了呢?就用老的那个地址。) class Singleton(object): def __init__(self): self.c=1000 def __new__(cls, *args, **kw): #规定,__new__必须返回一个实例(当前类的实例或者父类的实例) #如果cls这个类没有类变量_instance,则会执行if下的代码 if not hasattr(cls, '_instance'): orig = super(Singleton, cls) #找到父类的类对象object,也可以写成orig = super() cls._instance = orig.__new__(cls, *args, **kw) #可以写成不带参数