小编Pie*_*rre的帖子

支持自定义类的深层复制操作?

我有一个dict子类,它添加了新的方法和功能,我想要支持的主要内容是递归更新,它通过逐个更新每个嵌套dict来实现,与dict.update方法不同.

我正在使用该copy.deepcopy函数,就像任何其他对象一样,问题是当我向这个类添加属性访问时它不起作用:

__getattr__ = dict.__getitem__
__setattr__ = dict.__setitem__
__delattr__ = dict.__delitem__
Run Code Online (Sandbox Code Playgroud)

现在我收到这个错误:

KeyError: '__deepcopy__'
Run Code Online (Sandbox Code Playgroud)

copy.deepcopy函数正在尝试__deepcopy__对此对象使用方法:

copier = getattr(x, "__deepcopy__", None)
Run Code Online (Sandbox Code Playgroud)

为什么添加后__getattr__发生这种情况?有没有办法解决它而不实现__deepcopy__方法?


我从来没有使用过这种__deepcopy__方法所以我尝试添加一个,这就是我所拥有的:

def __deepcopy__(self, memo):
    # create a new instance of this object
    new_object = type(self)()

    # iterate over the items of this object and copy each one
    for key, value in self.iteritems():
        new_object[key] = copy.deepcopy(value, memo)

    return new_object
Run Code Online (Sandbox Code Playgroud)

这是正确的实施方式__deepcopy__吗?

python copy

5
推荐指数
1
解决办法
1069
查看次数

为什么`celery.current_app`引用Flask视图函数中的默认实例

我不是试图celery.current_app在视图函数中使用,但我有一个函数挂钩after_task_publish信号,它在任务发布后使用它来更新状态,它在Flask视图函数之外工作并正确更新状态,但是当我从视图函数内部发送任务,任务状态将不会更新,我检查了问题是它current_app.backend是一个DisabledBackend默认的实例,而不是RedisBackend我正在使用的实例.

发生这种情况是因为在Flask视图函数内部,当前Celery实例的代理celery.current_app引用了当前没有Celery实例时创建的默认实例.

我尝试重现正在发生的事情,这是一个测试脚本:

from __future__ import absolute_import, print_function, unicode_literals

from flask import Flask, request

from celery import Celery, current_app
from celery.signals import after_task_publish
# internal module for debugging purposes
from celery._state import default_app, _tls


# the flask application
flask_app = Flask(__name__)

# the celery application
celery_app = Celery('tasks', broker='amqp://', backend='redis://')

# debugging info
debug = """
[{location}]
celery_app       = {celery_app}
current_app      = {current_app}
add.app          = {add_app}
default_app      = …
Run Code Online (Sandbox Code Playgroud)

python thread-safety celery flask

5
推荐指数
1
解决办法
2533
查看次数

为什么 Webpack 的 sass-loader 在生产模式下最小化 CSS?

.css我正在为和文件设置 Webpack 加载器配置.scss,我注意到在使用时--mode production我将最小化的 CSS 作为最终输出,甚至没有显式使用最小化器,这是我的加载器配置:

{
  // Match .css or .scss
  test: /\.s?css$/,
  use: [
    isProd
    // In production extract the CSS into separate files
    ? {
      loader: MiniCssExtractPlugin.loader,
      options: {
        hmr: !isProd
      }
    }
    // In development inject the styles into the DOM
    : 'style-loader',
    {
      loader: 'css-loader'
    },
    {
      loader: 'sass-loader',
      options: {
        sourceMap: false
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我正在使用sass-loaderwithnode-sassmini-css-extract-plugin将CSS提取到单独的文件中,这建议使用optimize-css-assets-webpack-plugin通过覆盖来最小化CSS optimization.minimizer,但我已经在不安装此插件的情况下获得了最小化输出。

为了找出导致此行为的原因,我尝试处理有或没有 CSS …

css webpack sass-loader

5
推荐指数
2
解决办法
2142
查看次数

使用box-sizing属性时,jQuery superfish在ul标签上添加溢出?

我有一个奇怪的问题,jQuery superfish菜单插件在使用时一切正常,animation: {opacity: 'show'}并且应用于ul元素的内联样式是:

display: none; visibility: hidden;

我想用animation: {height: 'show'} ,但使用它的下拉菜单时,仅显示第1级的下拉菜单,因为快鱼是添加overflow: hidden;ul应用元素和内联样式:

display: none; overflow: hidden; visibility: hidden;

所以问题是overflow: hidden;阻止嵌套的ul元素在悬停时显示,所以我尝试添加overflow: visible !important;哪个修复了问题,但菜单的行为是缓慢的,我不想要这个解决方案.

所以我发现* {box-sizing: border-box;}我的css文件内部正在发生这种行为,当删除时,superfish不会添加overflow: hidden;到ul元素.

我在codepen上创建了一个demo:http://codepen.io/anon/pen/Awqdn

发生了什么:

animation: {opacity: 'show'}即使我有,1- 工作正常* {box-sizing: border-box;}

2- animation: {height: 'show'}因为插件中添加到ul元素的溢出隐藏而无法工作,* {box-sizing: border-box;}从css文件中删除时会解决此问题.

那么我该如何解决这个问题呢?什么overflow: hidden;时候有超级鱼加水box-sixing: border-box;

并提前感谢.

javascript css jquery superfish

4
推荐指数
1
解决办法
1837
查看次数

如何忽略sass中的多行注释?

生成css文件时有没有办法让sass忽略多行注释:

// these comments are ignored
Run Code Online (Sandbox Code Playgroud)

这些不是(仅在压缩模式下被忽略):

/*
 * multiline comments
 *
 */
Run Code Online (Sandbox Code Playgroud)

我在Github上找到了这张,作者说:

如果你真的想要,你可以monkeypatch Sass沉默/**/评论.

但是我不知道monkeypatch sass的含义是什么,所以我怎么能这样做呢?

ruby comments sass

4
推荐指数
1
解决办法
8192
查看次数

如何在Vue路由器中为除默认语言之外的所有语言环境添加i18n语言环境前缀?

我正在尝试创建一个路由来为所有路由添加语言环境前缀,我使用以下代码使其工作:

routes: [{
  path: '/:lang',
  component: {
    template: '<router-view />'
  },
  children: [
    {
      path: '',
      name: 'home',
      component: Home
    },
    {
      path: 'about',
      name: 'about',
      component: About
    },
    {
      path: 'contact',
      name: 'contact',
      component: Contact
    }
  ]
}]
Run Code Online (Sandbox Code Playgroud)

对于默认语言环境,en我不想设置此前缀,因此params.lang在这种情况下将是完整路径而不是语言环境代码,因此请求没有语言环境代码的任何路径将呈现Home匹配的组件。

那么我该怎么做呢?beforeEnter在这种情况下,导航守卫喜欢帮助吗?

javascript vue.js vue-router vue-i18n

4
推荐指数
1
解决办法
983
查看次数

如何删除显示为内联块的表行之间的空格?

我正在关注响应表的示例:http: //dbushell.com/demos/tables/rt_05-01-12.html

但我有显示为inline-block的表行之间的奇怪的空间,这里有一个演示:http://codepen.io/anon/pen/Fksjw

我尝试将边距归零,但我无法摆脱这个空间.

css css-tables responsive-design

3
推荐指数
1
解决办法
8369
查看次数

preg_match显示foreach循环中的第一个匹配项

我有一系列模式:

$patterns= array(
    '#http://(www\.)?domain-1.com/.*#i',
    '#http://(www\.)?domain-2.com/.*#i',
    ...
);
Run Code Online (Sandbox Code Playgroud)

我有长字符串,包含多个文本和网址,我想匹配字符串中出现的第一个网址,我只试过这个:

foreach ($patterns as $pattern) {
    preg_match($pattern, $the_string, $match);
    echo '<pre>'; print_r($match); echo '</pre>';
}
Run Code Online (Sandbox Code Playgroud)

它返回空数组,其中某些模式和包含url的数组不匹配,但取决于数组的顺序$patterns,

如何找到首先出现的这些模式的匹配项.

php regex preg-match

2
推荐指数
1
解决办法
1994
查看次数

如何使用before()回调来停止或延迟flexslider动画?

.animate-out在flexslider动画到下一张幻灯片之前在幻灯片的所有元素上添加了一个类,问题是应用的css动画将不会显示,因为flexslider会立即移动到下一张幻灯片.

我正在使用flexslider的before()回调函数添加该类,该函数在为滑块设置动画的函数内部调用,因此slider.pause()暂停滑块使用时间太晚(使用它会暂停下一张幻灯片).

我已经使用回调函数alert()内部测试了动画,该before()函数暂停了javascript执行,我可以看到添加的css动画.animate-out.

有没有办法阻止滑块动画(我slide.flexAnimate()稍后会用手动动画)?如果没有,是否有办法延迟幻灯片?这是Github上的代码.

javascript jquery flexslider

2
推荐指数
1
解决办法
8173
查看次数

创建包含要在以后下载和导入的数组数据的文件的最佳方法是什么?

好吧,我有一个关联数组包含应该在文件中下载的数据,然后稍后导入以便稍后使用相同的数据.

它看起来像这样(只有一些键包含数组):

array(
   'id1' => 'Data1',
   'id2' => 'Data2',
   'id3' => 'Data3',
   'id4' => 'Data4',
   'id5' => array(
               'id1' => 'Data1',
               'id2' => 'Data2',
               'id3' => 'Data3'
        )
Run Code Online (Sandbox Code Playgroud)

);

那么最好的方法是什么?

php xml arrays

1
推荐指数
1
解决办法
73
查看次数

如何在没有表单的情况下将长字符串发送到php文件?

我在表单内有一个textarea(表单action = post)和这个textarea下的一个链接,用户应填写此textarea并单击按钮将texarea中写入的文本传输到另一个文件,我正在使用jQuery来抓取textarea内容并将它们附加到链接的href,这工作正常,直到我用长字符串测试textarea.

那么将非常长的字符串发送到另一个php文件的替代方法是什么?

并谢谢.

javascript php jquery

1
推荐指数
1
解决办法
949
查看次数

如何使用正则表达式查找文本是否具有IP地址?

可能重复:
Regexp检查IP是否有效

我对正则表达式并不擅长并且我搜索了这个,但我能找到的只是匹配在数字前后有空格的IP地址,例如它只匹配这个:

Text before 192.168.1.1 Text after
Run Code Online (Sandbox Code Playgroud)

如何使其匹配任何IP地址,我不想要IP我只想知道文本是否有IP,例如我希望它也匹配:

text before192.168.1.1text after
Run Code Online (Sandbox Code Playgroud)

我试过这些:

\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b

^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
Run Code Online (Sandbox Code Playgroud)

并提前感谢.

php regex

1
推荐指数
1
解决办法
2656
查看次数