小编Gus*_*ava的帖子

没有自我的内部阶级功能

和平,大家好!我正在使用Python 3.6.3,我发现这样的构造是可能的奇怪:

class TestClass(object):
    def __init__(self):
        self.arg = "arg"

    def test():
        print("Hey test")
Run Code Online (Sandbox Code Playgroud)

并使用:

>>> TestClass.test()
"Hey test"
Run Code Online (Sandbox Code Playgroud)

我知道在Python中有标准方法,带有selfas参数(不知道如何正确调用它们),静态方法,类方法,抽象方法.

但是什么样的方法test()呢?这是静态方法吗?


编辑:

在类中确定函数的这种方法是否有任何有用的用例?

python class python-3.x

6
推荐指数
3
解决办法
4631
查看次数

Swift:为Bluetooth Central Manager选择队列

我正在开发将通过BLE与智能设备连接并与其通信的应用程序。

问题是:处理蓝牙事件的最佳实践在哪个队列中?

我阅读了很多教程,在所有教程中我都发现了这一点:

centralManager = CBCentralManager(delegate: self, queue: nil)
Run Code Online (Sandbox Code Playgroud)

他们选择处理主队列queue: nil)中的蓝牙事件,但我认为这不是一个好习惯。因为可能有很多查询从中央设备发送到外围设备,并且有很多答案从外围设备发送到中心设备。

我认为这可能是应用程序运行缓慢的原因,并且可能会对生产力产生不利影响,对吗?

这会淹没UI更新队列吗?

queue grand-central-dispatch ios core-bluetooth swift

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

熊猫:什么是观点?

请帮助我理解:view熊猫是什么意思.我知道如果我们改变某些东西,view我们总是在原始对象中进行更改.

但是对象和原始对象的视图具有不同id's的例子.这是否意味着它view是另一个参考原始对象的对象?机制是什么?

我试过但找不到解释.

import pandas as pd
import numpy as np

df = pd.DataFrame({'x': [1,2]})
print(df)
df_sub = df[0:1]
df_sub.x = -1
print(df_sub._is_view)               # True
print(id(df) == id(df_sub))          # False
print(np.shares_memory(df, df_sub))  # True
Run Code Online (Sandbox Code Playgroud)

python arrays numpy pandas

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

用空花括号初始化

第一次尝试,一切正常:

class Base {
 public:
    Base() {std::cout << "default ctor!\n"; }
};
...
Base b{};
Base b_one = {};
Run Code Online (Sandbox Code Playgroud)

另一种实现方式(添加explicit):

class Base {
 public:
    explicit Base() {std::cout << "default ctor!\n"; }
};
...
Base b{};
Base b_one = {};  // error! Why?
Run Code Online (Sandbox Code Playgroud)

我已经读过cppreference,在这两种情况下都会使用默认初始化而不会出现diffences.

从列表初始化:

否则,如果braced-init-list为空且T是具有默认构造函数的类类型,则执行值初始化.

从值初始化:

如果T是没有默认构造函数的类类型,或者是用户提供或删除的默认构造函数,则该对象是默认初始化的;

c++ constructor initialization explicit c++11

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

Pandas DataFrame列的布尔掩码

我的目标是使用布尔掩码从DataFrame获取有用的列.

我尝试这样的代码片段:

df = pd.DataFrame({'a': [1,2,3,4,5], 'b': [101, 101, 102, 101, 102], 'c': [23, 12, 54, 65, 21]})
mask = [True, False, True]
df.columns[mask]
Run Code Online (Sandbox Code Playgroud)

结果就是我真正需要的:

Index([u'a', u'c'], dtype='object')
Run Code Online (Sandbox Code Playgroud)

然后我尝试相同的代码,但使用另一个掩码:

mask_i = [1, 0, 1]

df = pd.DataFrame({'a': [1,2,3,4,5], 'b': [101, 101, 102, 101, 102], 'c': [23, 12, 54, 65, 21]})
mask_i = [1, 0, 1]
df.columns[mask]
Run Code Online (Sandbox Code Playgroud)

我期望相同的结果,但得到所有索引:

Index([u'b', u'a', u'b'], dtype='object')
Run Code Online (Sandbox Code Playgroud)

然后我检查:

mask_i = [1, 0, 1]
mask = [True, False, True]
print mask == mask_i`

# Result: `True`
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么面具是平等但我得到不同的结果.

python boolean dataframe pandas

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