小编Nei*_*l G的帖子

type .__ getattribute__和object .__ getattribute__有什么区别?

鉴于:

In [37]: class A:
   ....:     f = 1
   ....:

In [38]: class B(A):
   ....:     pass
   ....:

In [39]: getattr(B, 'f')
Out[39]: 1
Run Code Online (Sandbox Code Playgroud)

好吧,要么叫超级还是爬行mro?

In [40]: getattr(A, 'f')
Out[40]: 1
Run Code Online (Sandbox Code Playgroud)

这是预料之中的.

In [41]: object.__getattribute__(A, 'f')
Out[41]: 1

In [42]: object.__getattribute__(B, 'f')
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-42-de76df798d1d> in <module>()
----> 1 object.__getattribute__(B, 'f')

AttributeError: 'type' object has no attribute 'f'
Run Code Online (Sandbox Code Playgroud)

什么是getattribute没有做那个getattr呢?

In [43]: type.__getattribute__(B, 'f')
Out[43]: 1
Run Code Online (Sandbox Code Playgroud)

什么?! type.__getattribute__打电话超级,但object版本不?

In [44]: type.__getattribute__(A, 'f')
Out[44]: 1
Run Code Online (Sandbox Code Playgroud)

python getattr method-resolution-order python-internals

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

基于布尔向量在 numpy 中选择列

我有两个 NumPy 数组ab维度mn. 我有一个b长度为 Boolean 的向量,n我想生成一个新数组c,它na, 中选择列b,这样如果b[i]为真,我就从 , 中取列,b否则从a.

我如何以最有效的方式做到这一点?我看过selectwherechoose

python arrays numpy

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

如何计算numpy中的所有矢量差异对?

我知道我能做到np.subtract.outer(x, x).如果x有形状(n,),那么我最终得到一个有形状的数组(n, n).但是,我有一个x形状(n, 3).我想输出有形状的东西(n, n, 3).我该怎么做呢?也许np.einsum

numpy python-3.x numpy-einsum

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

高效的 numpy 数组创建

鉴于x,我想生成x, log(x)一个 numpy 数组,其中x具有 shape s,结果具有 shape (*s, 2)。什么是最简洁的方法来做到这一点? x可能只是一个浮点数,在这种情况下,我想要一个带有 shape 的结果(2,)

一个丑陋的方法是:

import numpy as np

x = np.asarray(x)
result = np.empty((*x.shape, 2))
result[..., 0] = x
result[..., 1] = np.log(x)
Run Code Online (Sandbox Code Playgroud)

python numpy

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

如何在指针向量之间动态转换?

我有:

class T {};

class S: public T {};

vector<T*> v;
vector<S*> w;

transform(v.begin(), v.end(), dynamic_cast_iterator<S*>(w.begin()));
Run Code Online (Sandbox Code Playgroud)

但是,当然,dynamic_cast_iterator不存在.

c++ boost stl

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

for循环中的Python列表初始化

如何在for循环中初始化列表:

for x, y in zip(list_x, list_y):
     x = f(x, y)
Run Code Online (Sandbox Code Playgroud)

不幸的是,即使我想要它,这个循环也不会改变list_x.

有没有办法在循环中引用list_x的元素?

我意识到我可以使用列表理解,但是当for循环非常复杂时,这很难理解.

编辑:我的for循环是20行.您通常会将20行放入单个列表理解中吗?

python list-comprehension list

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

使用Python解析字符串

我似乎无法在字符串的parse()方法上找到任何文档.有一个很好的参考?我想解析以下内容:

frame 0 rows {3 2 3 3 3 3 2 3 2 3 3 3 2 3 2 3 4 3 3 4 3 2 2 3 3 3 2 2 2 2 3 3 3 2 3 2 3 3 3 3 4 3 4 3 3 3 3 4 3 2 3 3 3 3 2 2 2 4 4 3 3 3 3 3 4 4 4 3 2 4 3 4 3 3 3 4 …
Run Code Online (Sandbox Code Playgroud)

python string parsing

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

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

Boost.python重载了numpy数组和python列表的构造函数

给定使用Boost.Python公开的C++类,如何公开两个构造函数:

  • 一个采用numpy数组的,和
  • 另一个需要python列表?

python boost-python

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

Python 模块变得太大

我的模块全部位于一个大文件中,该文件越来越难以维护。打破事物的标准方式是什么?

我的文件中有一个模块my_module.py,我像这样导入它:

import my_module
Run Code Online (Sandbox Code Playgroud)

“my_module”很快就会有一千行,这正在突破我保持一切正常的能力的极限。我正在考虑添加文件my_module_base.pymy_module_blah.py等等,然后替换my_module.py

from my_module_base import *
from my_module_blah import *
# etc.
Run Code Online (Sandbox Code Playgroud)

然后,用户代码不需要更改:

import my_module  # still works...
Run Code Online (Sandbox Code Playgroud)

这是标准模式吗?

python python-module

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