我有一个属性的Python对象a,b,c.
我仍然使用旧的字符串格式,所以我通常手动打印:
print 'My object has strings a=%s, b=%s, c=%s' % (obj.a, obj.b, obj.c)
Run Code Online (Sandbox Code Playgroud)
最近,我的琴弦已获得超级长,我宁愿能够简单地传递对象转换成字符串格式的功能,是这样的:
print 'My object has strings a=%a, b=%b, c=%c'.format(obj)
Run Code Online (Sandbox Code Playgroud)
但是,语法不正确.这可能吗?
鉴于Kotlin的列表查找语法,
if (x in myList)
Run Code Online (Sandbox Code Playgroud)
而不是惯用的Java,
if (myList.contains(x))
Run Code Online (Sandbox Code Playgroud)
怎么能表达否定?编译器不喜欢以下任何一个:
if (x not in mylist)
if !(x in mylist)
Run Code Online (Sandbox Code Playgroud)
是否有一种惯用的表达方式除此之外if !(mylist.contains(x)))?我没有在Kotlin Control Flow文档中看到它.
可以使用或不使用调用来初始化Python子类super(),如下所示
class Parent(object):
...
class Child(Parent):
def __init__(self):
super(Child, self).__init__()
class Child(Parent):
def __init__(self):
Parent.__init__(self)
Run Code Online (Sandbox Code Playgroud)
这些案件之间的区别是什么,并且通常比另一个更好?
我正在尝试SomeClass从导入的包中对一个方法进行monkeypatch :
from somepackage import SomeClass
def newmethod(obj, node, **kwargs):
""" """
SomeClass.oldmethod = newmethod
Run Code Online (Sandbox Code Playgroud)
在哪里obj和node在默认调用签名SomeClass.oldmethod:
class SomeClass(object):
def oldmethod(obj, node):
""" """
Run Code Online (Sandbox Code Playgroud)
我知道monkeypatching不是一个好习惯,但我们需要一个解决方法,同时我们解决了一些无法解决的问题.上面的方法很有效,但是我们想用部分函数来做这件事.例如:
from functools import partial
newmethod_a = partial(newmethod, foo='a')
newmethod_b = partial(newmethod, foo='b')
Run Code Online (Sandbox Code Playgroud)
调用部分函数是因为我们需要传递不同的**kwargs.但是当我现在尝试超载时:
SomeClass.oldmethod = newmethod_a
Run Code Online (Sandbox Code Playgroud)
我得到一个与传递的参数数量相关的错误,但它非常特定于我的问题所以粘贴它可能没有帮助...我认为错误与oldmethod采取两个位置参数(obj, node)和我的部分的调用签名有关功能不传递到一基准obj和node正确.我尝试了不同的结构,如:
newmethod_a = partial(SomeClass.newmethod, foo='a')
Run Code Online (Sandbox Code Playgroud)
对不起,我无法生成一个最小的工作示例.我希望也许专家会从经验中认识到这个问题,并告诉我,如果我在尝试的范围内甚至是可能的partial.
谢谢
为什么要在 kubernetes 应用程序中进行设置-Xmx呢-Xms?
我们继承了一个存在内存不足错误的 kubernetes 应用程序。看起来最初的开发人员设置了 kubernetes 资源限制(0.95 CPU 核心和 4Gb 内存),如下所示。然而,他们还将最大堆大小设置JAVA_OPTS -Xmx为 800mb。
我找到了很多关于最佳设置的好材料-Xmx(例如这个),但找不到以下问题的直接答案:我们真的需要在 kubernetes 容器中设置-Xmx(不太重要的是)吗?-Xms我们已经对容器设置了硬性限制
resources,那么设置这些标志有什么意义呢?如果我们把它们全部删除,结果会是什么?应用程序 GC 会更频繁吗?它会动态缩放堆大小还是将堆大小最大值固定为某个默认最大值(例如 256MB)?有没有-Xmx与 kubernets 容器成比例设置的经验法则?
正在调试本地应用程序并希望跟踪对在localhost:8080. 可以过滤domain=localhost; 然而,这也会从对运行在localhost:9999. 是否有办法在过滤器中包含端口 8080,或者至少排除端口 9999?
domain:localhost:8080不起作用...
相关:过滤路径的一部分也会很有帮助。例如,localhost:8080/foo/bar/baz...如果我可以过滤*bar*或*bar/baz*也可以做到这一点
我有以下kotlin类与主要构造函数,
class Person(first: String, last: String, age: Int){
init{
println("Initializing")
}
}
Run Code Online (Sandbox Code Playgroud)
我想添加一个辅助构造函数,它将一个fullname解析为a first和lastname并调用主构造函数.但是,我无法正确理解语法...
class Person(first: String, last: String, age: Int){
// Secondary constructor
constructor(fullname: String, age: Int):
this("first", "last", age)
{
println("In secondary constructor")
}
init{
println("Initializing")
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,因为我实际上fullname并没有在辅助构造函数中进行解析.当我继续尝试解析全名时,
constructor(fullname: String, age: Int):
var first = fullname.split()[0];
...
{
println("In secondary constructor")
}
Run Code Online (Sandbox Code Playgroud)
我得到一个未解决的参考:全名.它在范围内不存在,但是如果我把它放在括号中,那么我不能通过调用主构造函数this,
constructor(fullname: String, age: Int):
{
var first = fullname
this(first, "foo", age)
println("In secondary constructor")
}
Run Code Online (Sandbox Code Playgroud)
我得到一个涉及缺失 …
我想问一下是否有一种简单有效的方法可以将给定的字符呈现给一个 numpy 数组。我想要的是一个函数,它接受一个字符作为输入,并返回一个 numpy 数组,然后我可以将其用作plt.imshow()函数的参数。除了一些需要大量依赖的解决方案外,在互联网上真的找不到,这似乎是一件容易的事。
我正在尝试JSON编码一个复杂的numpy数组,我发现了一个来自astropy的实用程序(http://astropy.readthedocs.org/en/latest/_modules/astropy/utils/misc.html#JsonCustomEncoder)目的:
import numpy as np
class JsonCustomEncoder(json.JSONEncoder):
""" <cropped for brevity> """
def default(self, obj):
if isinstance(obj, (np.ndarray, np.number)):
return obj.tolist()
elif isinstance(obj, (complex, np.complex)):
return [obj.real, obj.imag]
elif isinstance(obj, set):
return list(obj)
elif isinstance(obj, bytes): # pragma: py3
return obj.decode()
return json.JSONEncoder.default(self, obj)
Run Code Online (Sandbox Code Playgroud)
这适用于复杂的numpy数组:
test = {'some_key':np.array([1+1j,2+5j, 3-4j])}
Run Code Online (Sandbox Code Playgroud)
倾销收益率:
encoded = json.dumps(test, cls=JsonCustomEncoder)
print encoded
>>> {"some key": [[1.0, 1.0], [2.0, 5.0], [3.0, -4.0]]}
Run Code Online (Sandbox Code Playgroud)
问题是,我无法自动将其读回复杂数组.例如:
json.loads(encoded)
>>> {"some_key": [[1.0, 1.0], [2.0, 5.0], [3.0, -4.0]]}
Run Code Online (Sandbox Code Playgroud)
你能帮助我找出覆盖加载/解码的方法,以便推断它必须是一个复杂的数组吗?IE而不是2元素项的列表,它应该只是将它们放回到复杂的数组中.JsonCustomDecoder没有default()覆盖的方法,编码文档对我来说有太多的术语.
我注意到scipy.specialn阶和参数x的Bessel函数在x中jv(n,x)被矢量化:
In [14]: import scipy.special as sp
In [16]: sp.jv(1, range(3)) # n=1, [x=0,1,2]
Out[16]: array([ 0., 0.44005059, 0.57672481])
但是没有相应的矢量化形式的球形贝塞尔函数,sp.sph_jn:
In [19]: sp.sph_jn(1,range(3))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-19-ea59d2f45497> in <module>()
----> 1 sp.sph_jn(1,range(3)) #n=1, 3 value array
/home/glue/anaconda/envs/fibersim/lib/python2.7/site-packages/scipy/special/basic.pyc in sph_jn(n, z)
262 """
263 if not (isscalar(n) and isscalar(z)):
--> 264 raise ValueError("arguments must be scalars.")
265 if (n != floor(n)) or (n < 0):
266 raise ValueError("n must be a …Run Code Online (Sandbox Code Playgroud) python ×6
numpy ×3
kotlin ×2
arrays ×1
character ×1
encoding ×1
heap-memory ×1
inheritance ×1
java ×1
javascript ×1
json ×1
kubernetes ×1
partials ×1
python-2.7 ×1
scipy ×1
string ×1
unicode ×1