和平,大家好!我正在使用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()呢?这是静态方法吗?
编辑:
在类中确定函数的这种方法是否有任何有用的用例?
我正在开发将通过BLE与智能设备连接并与其通信的应用程序。
问题是:处理蓝牙事件的最佳实践是在哪个队列中?
我阅读了很多教程,在所有教程中我都发现了这一点:
centralManager = CBCentralManager(delegate: self, queue: nil)
Run Code Online (Sandbox Code Playgroud)
他们选择处理主队列(queue: nil)中的蓝牙事件,但我认为这不是一个好习惯。因为可能有很多查询从中央设备发送到外围设备,并且有很多答案从外围设备发送到中心设备。
我认为这可能是应用程序运行缓慢的原因,并且可能会对生产力产生不利影响,对吗?
这会淹没UI更新队列吗?
请帮助我理解: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) 第一次尝试,一切正常:
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是没有默认构造函数的类类型,或者是用户提供或删除的默认构造函数,则该对象是默认初始化的;
我的目标是使用布尔掩码从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)
有人可以解释为什么面具是平等但我得到不同的结果.