小编drh*_*gen的帖子

理解__getattr__和__getattribute__之间的区别

我试图理解上的差异之间__getattr____getattribute__,但是,我在它失败.

Stack Overflow问题的答案vs 之间的差异__getattr____getattribute__说:

__getattribute__在查看对象的实际属性之前调用,因此正确实现可能很棘手.您最终可以轻松地进行无限递归.

我完全不知道这意味着什么.

然后继续说:

你几乎肯定想要__getattr__.

为什么?

我读到如果__getattribute__失败,__getattr__就会被调用.那么为什么有两种不同的方法做同样的事情呢?如果我的代码实现了新的样式类,我应该使用什么?

我正在寻找一些代码示例来清除这个问题.我已经用Google搜索了我的能力,但我找到的答案并没有彻底讨论这个问题.

如果有任何文档,我准备阅读.

python oop encapsulation getattr getattribute

192
推荐指数
4
解决办法
7万
查看次数

如何在Python中进行并行编程

对于C++,我们可以使用OpenMP进行并行编程; 但是,OpenMP不适用于Python.如果我想并行我的python程序的某些部分,我该怎么办?

代码的结构可以被认为是:

 solve1(A)
 solve2(B)
Run Code Online (Sandbox Code Playgroud)

哪里solve1solve2是两个独立的功能.如何并行运行这种代码而不是按顺序运行以减少运行时间?希望可以有人帮帮我.首先十分感谢.代码是:

def solve(Q, G, n):
    i = 0
    tol = 10 ** -4

    while i < 1000:
        inneropt, partition, x = setinner(Q, G, n)
        outeropt = setouter(Q, G, n)

        if (outeropt - inneropt) / (1 + abs(outeropt) + abs(inneropt)) < tol:
            break

        node1 = partition[0]
        node2 = partition[1]

        G = updateGraph(G, node1, node2)

        if i == 999:
            print "Maximum iteration reaches"
    print inneropt
Run Code Online (Sandbox Code Playgroud)

setinner和setouter是两个独立的函数.这就是我要平行的地方......

python parallel-processing

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

提高404并继续URL链

我有一个像这样的URL模式:

urlpatterns = (
    url(r'^$', list_titles, name='list'),
    url(r'^(?P<tag>[a-z\-0-9]+?)/$', list_titles, name='filtered-list'),
    url(r'^(?P<title>\S+?)/$', show_title, name='title'),
)
Run Code Online (Sandbox Code Playgroud)

filtered-listtitle匹配同样的事情.

如果有事情匹配的可用列表tagfiltered-list,我要list_titles火了.但是,如果没有匹配tag,我想将其重新发送回URL处理器,以便show_title激活.

如果没有匹配的标题,我会在那里提出一个合适的404.

我知道我可以从视图中做到这一点......但是有点臭,不得不将进程硬连接到视图中.我希望通过URL命令来决定首先选择哪些内容以及它的内容.

django django-signals django-urls django-views

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

将sympy表达式转换为numpy数组的函数

我有一个同意写的ODE系统:

from sympy.parsing.sympy_parser import parse_expr

xs = symbols('x1 x2')
ks = symbols('k1 k2')
strs = ['-k1 * x1**2 + k2 * x2', 'k1 * x1**2 - k2 * x2']
syms = [parse_expr(item) for item in strs]
Run Code Online (Sandbox Code Playgroud)

我想这转换成向量量值函数,接受的x值,第k值的1D numpy的阵列的一维阵列numpy的,返回在那些点评估的方程的一个一维阵列numpy的.签名看起来像这样:

import numpy as np
x = np.array([3.5, 1.5])
k = np.array([4, 2])
xdot = my_odes(x, k)
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西的原因是给这个功能scipy.integrate.odeint,所以它需要快.

尝试1:潜艇

当然,我可以写一个包装器subs:

def my_odes(x, k):
    all_dict = dict(zip(xs, x))
    all_dict.update(dict(zip(ks, k)))
    return np.array([sym.subs(all_dict) for sym in syms])
Run Code Online (Sandbox Code Playgroud)

但这是超级慢的,特别是对于我的真实系统,它更大,并且运行了很多次.我需要将此操作编译为C代码.

尝试2:theano

我可以通过sympy …

python numpy sympy scipy

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

提取 Polars 文字的值

如果我有一个 Polars 文字,如何提取该值?

import polars as pl

expr = pl.lit(0.5)

val = float(expr)
# TypeError: float() argument must be a string or a real number, not 'Expr'
Run Code Online (Sandbox Code Playgroud)

python-polars

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

Scala:类型参数类的隐式证据

这是一个带有两个特征的简单设置,一个具有由前一个特征限定的协变类型参数的类,另一个类具有由另一个类限定的类型参数.对于这两个类,只有当两个特征中的一个作为类型参数的基础时,才能使用特定方法(通过隐式证据).编译好:

trait Foo
trait ReadableFoo extends Foo {def field: Int}

case class Bar[+F <: Foo](foo: F) {
  def readField(implicit evidence: F <:< ReadableFoo) = foo.field
}

case class Grill[+F <: Foo, +B <: Bar[F]](bar: B) {
  def readField(implicit evidence: F <:< ReadableFoo) = bar.readField
}
Run Code Online (Sandbox Code Playgroud)

但是,由于Bar是协变的F,我不应该需要F参数Grill.我应该要求它B是一个子类型Bar[ReadableFoo].但是,这失败了:

case class Grill[+B <: Bar[_]](bar: B) {
  def readField(implicit evidence: B <:< Bar[ReadableFoo]) = bar.readField
}
Run Code Online (Sandbox Code Playgroud)

有错误:

error: Cannot prove that Any …
Run Code Online (Sandbox Code Playgroud)

scala implicit-conversion type-parameter

10
推荐指数
2
解决办法
5845
查看次数

Scala:构建特征和类的复杂层次结构

我最近在SO上发布了几个关于Scala 特征,表示类型,成员类型,清单隐式证据的问题.这些问题背后是我为生物蛋白质网络构建建模软件的项目.尽管有非常有用的答案,这让我比我自己更接近,但我仍然没有找到我的项目的解决方案.有几个答案表明我的设计存在缺陷,这就是为什么解决Foo问题的方法在实践中不起作用的原因.在这里,我发布了一个更复杂(但仍然大大简化)的问题版本.我希望问题和解决方案对于尝试在Scala中构建复杂的特征和类层次结构的人来说将是广泛有用的.

我项目中的最高级别是生物反应规则.规则描述了如何通过反应转化一种或两种反应物.每个反应物是具有称为单体和边缘的节点的图,所述节点连接在单体上的命名位点之间.每个站点也都有一个可以处于的状态.编辑:边缘的概念已从示例代码中删除,因为它们使示例复杂化而不会对问题做出太多贡献.规则可能是这样的:有一种由单体A制成的反应物分别通过位点a1和b1与单体B结合; 债券被规则打破,使得网站a1和b1不受约束; 同时在单体A上,站点a1的状态从U变为P.我将其写为:

A(a1~U-1).B(b1-1) -> A(a1~P) + B(b1)
Run Code Online (Sandbox Code Playgroud)

(在Scala中解析这样的字符串非常简单,它使我的头旋转.)-1表示债券#1在这些网站之间 - 数字只是一个任意标签.

这是我到目前为止的原因以及为什么我添加每个组件的原因.它编译,但只有无偿使用asInstanceOf.如何摆脱asInstanceOfs以使类型匹配?

我用基本类代表规则:

case class Rule(
  reactants: Seq[ReactantGraph], // The starting monomers and edges
  producedMonomers: Seq[ProducedMonomer] // Only new monomers go here
) {
  // Example method that shows different monomers being combined and down-cast
  def combineIntoOneGraph: Graph = {
    val all_monomers = reactants.flatMap(_.monomers) ++ producedMonomers
    GraphClass(all_monomers)
  }
} …
Run Code Online (Sandbox Code Playgroud)

scala

10
推荐指数
2
解决办法
1494
查看次数

腌制具有 __slots__ 的冻结数据类

如何使用 pickle 冻结数据类的实例__slots__?例如,以下代码在 Python 3.7.0 中引发异常:

import pickle
from dataclasses import dataclass

@dataclass(frozen=True)
class A:
  __slots__ = ('a',)
  a: int

b = pickle.dumps(A(5))
pickle.loads(b)
Run Code Online (Sandbox Code Playgroud)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 3, in __setattr__
dataclasses.FrozenInstanceError: cannot assign to field 'a'
Run Code Online (Sandbox Code Playgroud)

如果我删除frozen__slots__. 这只是一个错误吗?

python pickle slots python-dataclasses

9
推荐指数
2
解决办法
2216
查看次数

Scala:如何使案例类复制保留清单信息

案例类copy()方法应该生成实例的相同副本,并且按名称替换任何字段.当case类具有带有清单的类型参数时,这似乎失败了.该副本失去了对其参数类型的所有知识.

case class Foo[+A : Manifest](a: A) {
  // Capture manifest so we can observe it
  // A demonstration with collect would work equally well
  def myManifest = implicitly[Manifest[_ <: A]]
}

case class Bar[A <: Foo[Any]](foo: A) {
  // A simple copy of foo
  def fooCopy = foo.copy()
}

val foo = Foo(1)
val bar = Bar(foo)

println(bar.foo.myManifest)     // Prints "Int"
println(bar.fooCopy.myManifest) // Prints "Any"
Run Code Online (Sandbox Code Playgroud)

为什么会Foo.copy丢失参数上的清单以及如何保留它?

scala manifest type-erasure type-parameter

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

如何在python中将月份数转换为月份名

如何获得与用户输入相对应的列表.如果我有一个列表如下:

month_lst = ['January', 'February', 'March', 'April', 'May', 'June', 'July',
              'August', 'September', 'October', 'November', 'December']
Run Code Online (Sandbox Code Playgroud)

如何输入1作为答案返回"1月"?

input('Enter the number to be converted: ')
Run Code Online (Sandbox Code Playgroud)

此外,输入需要检查列表以确保它在1-12之内,因此输入15将读取错误消息.

numbers list python-3.2

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