小编Par*_*ham的帖子

datetime:舍入/修剪位数,以微秒为单位

目前我正在记录东西,我正在使用我自己的格式化程序与自定义formatTime():

def formatTime(self, _record, _datefmt):
    t = datetime.datetime.now()
    return t.strftime('%Y-%m-%d %H:%M:%S.%f')
Run Code Online (Sandbox Code Playgroud)

我的问题是微秒%f,是六位数.无论如何吐出更少的数字,比如微秒的前三位数?

python datetime formatter

35
推荐指数
5
解决办法
5万
查看次数

python:创建文件,但如果名称存在则添加数字

python是否有任何内置功能?我的想法是,如果将文件输出到已存在该名称的文件的目录,它将以某种操作系统的工作方式工作.即:如果"file.pdf"存在,它将创建"file2.pdf",并且下次"file3.pdf".

python file-io operating-system

15
推荐指数
6
解决办法
1万
查看次数

打印没有转义字符的unicode字符列表

如果您有一个字符串,使用unicode字符,您可以打印它,并获得未转义的版本:

>>> s = "äåö"
>>> s
'\xc3\xa4\xc3\xa5\xc3\xb6'
>>> print s
äåö
Run Code Online (Sandbox Code Playgroud)

但如果我们有一个包含上面字符串的列表并打印它:

>>> s = ['äåö']
>>> s
['\xc3\xa4\xc3\xa5\xc3\xb6']
>>> print s
['\xc3\xa4\xc3\xa5\xc3\xb6']
Run Code Online (Sandbox Code Playgroud)

你仍然可以获得转义字符序列.你如何获得未被列出的列表内容,是否可能?像这样:

>>> print s
['äåö']
Run Code Online (Sandbox Code Playgroud)

此外,如果字符串是unicode类型,你如何做同样的事情?

>>> s = u'åäö'
>>> s
u'\xe5\xe4\xf6'
>>> print s
åäö
>>> s = [u'åäö']
>>> s
[u'\xe5\xe4\xf6']
>>> print s
[u'\xe5\xe4\xf6']
Run Code Online (Sandbox Code Playgroud)

python encoding list python-2.7

8
推荐指数
2
解决办法
4658
查看次数

仅将关键字参数传递给__new __()并且永远不会将其传递给__init __()?

第1部分

我有一个设置,我有一组我想要模拟的类,我的想法是,在我想要这样做的情况下,我将一个mock关键字参数传递给构造函数并__new__拦截它,而是传回一个模拟版本的那个对象.

它看起来像这样(在@mgilsons建议之后编辑了关键字查找):

class RealObject(object):
    def __new__(cls, *args, **kwargs):
        if kwargs.pop('mock', None):
            return MockRealObject()
        return super(RealObect, cls).__new__(cls, *args, **kwargs)

    def __init__(self, whatever = None):
        '''
        Constructor
        '''
        #stuff happens
Run Code Online (Sandbox Code Playgroud)

然后我像这样调用构造函数:

ro = RealObject(mock = bool)
Run Code Online (Sandbox Code Playgroud)

我这里的问题是,当我得到下面的错误boolFalse:

TypeError: __init__() got an unexpected keyword argument 'mock'

如果我mock作为关键字参数添加__init__但是我要问的是否可以避免这种情况.我甚至mock从中弹出kwargs dict.

也是关于设计的问题.有一个更好的方法吗?(当然!)我想尝试这样做,不使用工厂或超类或任何东西.但是,我还应该使用其他关键字吗?__call__

第2部分基于jsbueno的回答

所以我想将元类和__new__函数提取到一个单独的模块中.我这样做了:

class Mockable(object):

    def __new__(cls, *args, **kwargs):

        if …
Run Code Online (Sandbox Code Playgroud)

python mocking

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

pylint:禁用R0921不起作用,仍然警告

我有一个类,它有两个方法可以引发NotImplementedError并从一个抽象类继承(一个包含抽象方法的类,来自abc包.这个父类继承自标记为abstract的类__metaclass__ = ABCMeta).因此,在我的代码上运行pylint时会引发R0921警告.如果我删除了NotImplementedErrorspylint,则不会发出警告.现在,我已经尝试过这样的类禁用R0921:

# pylint: disable=R0921
class Wrapper(AbstractWrapper):
    ...
    def func(self, kwargs**):
        raise NotImplementedError
    ...
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.我仍然收到警告"Abstract class not referenced".我错过了什么?

python pylint

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

使用@abstractproperty和@abstractmethod实现/覆盖的实际差异

考虑一个带有函数的抽象基类,您希望每个后续子类都要覆盖它.使用abc模块和ABCMeta; 用装饰器实际装饰@abstractproperty@abstractmethod实际强制子类/开发人员实现创建装饰器指定的函数类型?从我的实验中,您可以使用方法和带有子类中的属性的抽象方法覆盖抽象属性.

这个概念不正确吗?

python properties abc abstract

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

Python中的函数多态性

我一直在四处寻找最好的方法,但我还没有找到任何完全令人信服的东西.

我正在编写一个系统,其中包含用户对象和管理这些用户的集合.每个用户都有一个名称,我想在管理器中指定一个可以取用User名称或User对象本身的函数.

class UserManager: 
  def remove_user(self,user_or_username):
    #If user_or_username is a string
    remote.remove(user_or_username)
    #If user_or_username is a User object
    remote.remove(user_or_username.name)
Run Code Online (Sandbox Code Playgroud)

有没有任何漂亮的方式这样做或使用isinstance的方式去?

python polymorphism

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

为什么这个JavaScript正则表达式在浏览器中崩溃了?

据我所知[ab],(a|b)在尝试匹配一组字符时应该是有目的的.现在,看看两个正则表达式:

/^(\s|\u00A0)+|(\s|\u00A0)+$/g
/^[\s\u00A0]+|[\s\u00A0]+$/g
Run Code Online (Sandbox Code Playgroud)

它们都应该匹配字符串开头和结尾的空格(有关正则表达式本身的更多信息,请参阅Polyfill 这里的部分).当使用方括号时,一切都运行良好,但是当你切换到括号时,即使是最简单的字符串也会导致浏览器无限期地运行.这种情况发生在最新的Chrome和Firefox上.

这个jsfiddle演示了这个:

a ="a                                                               b";

// Doesn't work
// alert(a.replace(/^(\s|\u00A0)+|(\s|\u00A0)+$/g,''));
// Works
alert(a.replace(/^[\s\u00A0]+|[\s\u00A0]+$/g,''));
Run Code Online (Sandbox Code Playgroud)

这是一个疯狂的怪癖与浏览器的正则表达式引擎的实现或还有其他关于正则表达式的算法导致这个?

javascript regex browser

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

将类初始化的const成员传递给Base构造函数?

我在派生类中有一个类内初始化const成员,我想将其传递给基类的构造函数.

例:

class Base{
public:
    Base(int a) : i(a){}
private:
    int i;
};

class Derived : Base{
public:
    Derived() : Base(a){}
private:
    const int a = 7;
};

int main(){
    Derived d;
}
Run Code Online (Sandbox Code Playgroud)

但是,这会产生一个未初始化的错误:

field 'a' is uninitialized when used here [-Wuninitialized]
Run Code Online (Sandbox Code Playgroud)

我的印象是const初始化它会直接设置值,允许它以这种方式从派生的ctor传递.我做错了什么还是我的印象不对?const in-class初始化成员何时初始化?

c++ c++11

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

为什么可以在Bash函数中设置环境变量,但不在脚本本身中设置

为什么这样做:

# a.sh
setEnv() {
    export TEST_A='Set'
}
Run Code Online (Sandbox Code Playgroud)

当这不是:

# b.sh
export TEST_B='Set'
Run Code Online (Sandbox Code Playgroud)

例如:

> source a.sh
> setEnv
> env | grep TEST_A
TEST_A=Set
> b.sh
> env | grep TEST_B
Run Code Online (Sandbox Code Playgroud)

我理解为什么运行脚本不起作用以及如何使它工作(source b.sh等),但我很好奇为什么功能工作.如果重要的话,这是在OS X上.

bash

2
推荐指数
3
解决办法
4678
查看次数

编译时安全和运行时安全是什么意思?


根据这篇关于 Java Enum 的文章,运行时安全可以通过使用==运算符来比较状态和阻止来实现NullPointerException

if(testPz.getStatus() == Pizza.PizzaStatus.DELIVERED); 
Run Code Online (Sandbox Code Playgroud)

此外,compile-time-safety虽然从逻辑上证明比较是错误的,但通过使用运算符可以避免此问题==

if(testPz.getStatus() == TestColor.GREEN);
Run Code Online (Sandbox Code Playgroud)

你能告诉我什么是 Java 中的 compile-time-safety和吗?runtime-safety

如果可以的话请给我一个小例子。

java runtime compile-time

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