目前我正在记录东西,我正在使用我自己的格式化程序与自定义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是否有任何内置功能?我的想法是,如果将文件输出到已存在该名称的文件的目录,它将以某种操作系统的工作方式工作.即:如果"file.pdf"存在,它将创建"file2.pdf",并且下次"file3.pdf".
如果您有一个字符串,使用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) 我有一个设置,我有一组我想要模拟的类,我的想法是,在我想要这样做的情况下,我将一个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)
我这里的问题是,当我得到下面的错误bool
是False
:
TypeError: __init__() got an unexpected keyword argument 'mock'
如果我mock
作为关键字参数添加__init__
但是我要问的是否可以避免这种情况.我甚至mock
从中弹出kwargs
dict
.
这也是关于设计的问题.有一个更好的方法吗?(当然!)我想尝试这样做,不使用工厂或超类或任何东西.但是,我还应该使用其他关键字吗?__call__
?
所以我想将元类和__new__
函数提取到一个单独的模块中.我这样做了:
class Mockable(object):
def __new__(cls, *args, **kwargs):
if …
Run Code Online (Sandbox Code Playgroud) 我有一个类,它有两个方法可以引发NotImplementedError
并从一个抽象类继承(一个包含抽象方法的类,来自abc
包.这个父类继承自标记为abstract的类__metaclass__ = ABCMeta
).因此,在我的代码上运行pylint时会引发R0921警告.如果我删除了NotImplementedErrors
pylint,则不会发出警告.现在,我已经尝试过这样的类禁用R0921:
# pylint: disable=R0921
class Wrapper(AbstractWrapper):
...
def func(self, kwargs**):
raise NotImplementedError
...
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.我仍然收到警告"Abstract class not referenced".我错过了什么?
考虑一个带有函数的抽象基类,您希望每个后续子类都要覆盖它.使用abc模块和ABCMeta; 用装饰器实际装饰@abstractproperty
或@abstractmethod
实际强制子类/开发人员实现创建装饰器指定的函数类型?从我的实验中,您可以使用方法和带有子类中的属性的抽象方法覆盖抽象属性.
这个概念不正确吗?
我一直在四处寻找最好的方法,但我还没有找到任何完全令人信服的东西.
我正在编写一个系统,其中包含用户对象和管理这些用户的集合.每个用户都有一个名称,我想在管理器中指定一个可以取用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的方式去?
据我所知[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)
这是一个疯狂的怪癖与浏览器的正则表达式引擎的实现或还有其他关于正则表达式的算法导致这个?
我在派生类中有一个类内初始化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初始化成员何时初始化?
为什么这样做:
# 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上.
根据这篇关于 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
如果可以的话请给我一个小例子。
python ×7
abc ×1
abstract ×1
bash ×1
browser ×1
c++ ×1
c++11 ×1
compile-time ×1
datetime ×1
encoding ×1
file-io ×1
formatter ×1
java ×1
javascript ×1
list ×1
mocking ×1
polymorphism ×1
properties ×1
pylint ×1
python-2.7 ×1
regex ×1
runtime ×1