还有一个关于"自我"是什么的问题,如果你不使用'自我'和什么是'cls'会发生什么.我"完成了我的作业",我只是想确保自己完成所有工作.
self
- 要访问对象的属性,需要在属性名称前加上对象名称(objname.attributename
).同样的方法self
用于访问对象(类)本身内的属性.因此,如果您没有在类方法中使用self作为self的前缀,那么您将无法在类的其他方法中或在类之外访问该变量.因此,如果您只想将变量局部化为该方法,则可以省略它.同样的方法如果你有一个方法并且你没有想要与其他方法共享的任何变量,你可以省略self
方法参数.
cls
- 每个实例都创建它自己的属性"副本",因此如果您希望类的所有实例共享同一个变量,您可以cls
在类声明中使用' '作为前缀.
这样可以吗?谢谢.
我正在编写一个Python类,它将包含一个包含C结构的C模块.我使用的是Cython语言(Python和C的超集语言).C结构在构造函数中是malloc,并包含一个我想在Python中使用的数组.该数组将在Python中表示为NumPy数组,但我不想将值复制到它.我想将NumPy数组直接链接到malloc内存.对于此任务,我使用NumPy Array API,特别是此函数:
PyObject*
PyArray_SimpleNewFromData
(int nd, npy_intp* dims, int typenum, void* data)
我设法使用Cython中的代码将NumPy数组绑定到C结构的数组,只要NumPy数组和MultimediaParams
对象具有相同的生命周期,它就可以正常工作:
cdef class MultimediaParams:
def __init__(self, **kwargs):
self._mm_np = < mm_np *> malloc(sizeof(mm_np))
#some code...
def as_ndarray(self): #TODO: what if self deallocated but numpy array still exists(segfault?)
cdef numpy.npy_intp shape[1]
cdef int arr_size = sizeof(self._mm_np[0].n2) / sizeof(self._mm_np[0].n2[0])
shape[0] = < numpy.npy_intp > arr_size
cdef numpy.ndarray ndarray
ndarray = numpy.PyArray_SimpleNewFromData(1, shape, numpy.NPY_DOUBLE, self._mm_np[0].n2)
return ndarray
def __dealloc__(self):
free(self._mm_np)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,该类具有其__dealloc__
方法,该方法将处理在C中分配的内存,并在没有对MultimediaParams
实例的引用时释放它.
在这种绑定中,NumPy不拥有数组的内存. …
我有一个矩阵,实现了John Conway的生命模拟器,其中每个单元代表生命或缺乏生命.
每个生命周期都遵循以下规则:
任何活的邻居少于两个的活细胞都会死亡,好像是由人口不足造成的.
任何有两三个活邻居的活细胞都会生活在下一代.
任何有三个以上活着的邻居的活细胞都会死亡,就像过度拥挤一样.
具有正好三个活邻居的任何死细胞变成活细胞,就好像通过繁殖一样.
每个单元格都有一个线程,可以按照上面列出的规则执行更改.
我已经实现了这些类:
import java.util.Random;
public class LifeMatrix {
Cell[][] mat;
public Action currentAction = Action.WAIT_FOR_COMMAND;
public Action changeAction;
public enum Action {
CHECK_NEIGHBORS_STATE,
CHANGE_LIFE_STATE,
WAIT_FOR_COMMAND
}
// creates a life matrix with all cells alive or dead or random between dead or alive
public LifeMatrix(int length, int width) {
mat = new Cell[length][width];
for (int i = 0; i < length; i++) { // populate the matrix with cells randomly alive …
Run Code Online (Sandbox Code Playgroud) 我在 Adobe Acrobat Pro 11 的 Action Wizard 中构建了一个动作,并将其命名为“myAcrobatAction”。
我想使用 VBA 代码在 Outlook 中自动使用它。
有没有办法通过命令行或其他方式调用用户定义的 Acrobat 操作,以便我能够在 VBA 代码中插入命令以从 Outlook/Excel 等应用程序执行它?
我有以下代码:
import resource
from copy import deepcopy
import pandas as pd
import random
n=100000
df = pd.DataFrame({'x': [random.randint(1, 1000) for i in range(n)],
'y': [random.randint(1, 1000) for i in range(n)],
'z': [random.randint(1, 1000) for i in range(n)]
})
df2=deepcopy(df)
print 'memory peak: {kb} kb'.format(kb=resource.getrusage(resource.RUSAGE_SELF).ru_maxrss)
Run Code Online (Sandbox Code Playgroud)
我希望在df2=deepcopy(df)
没有代码的情况下,此代码会看到不同的内存峰值用法。但是内存显示的结果完全相同。是否不deepcopy
应该克隆对象并因此增加内存使用量?
我有一个名为travels.xlsm的工作簿.
在ThisWorkbook中我有这个代码:
Private Sub Workbook_Open()
MsgBox "hello"
Application.Calculation = xlManual
ActiveWorkbook.RefreshAll 'refresh the querytables without recalculating
Application.Calculation = xlAutomatic
End Sub
Run Code Online (Sandbox Code Playgroud)
和UDFs模块中的代码:
Function hasHyperlink(rng As Range) As Boolean
hasHyperlink = rng.Hyperlinks.Count
End Function
Run Code Online (Sandbox Code Playgroud)
当我在活动工作表包含使用我的用户定义函数的条件格式时打开文件时 - Workbook_open()
sub将不会执行.
当活动工作表在条件格式化中不使用此功能时关闭工作簿时,再次保存并打开 - 它按预期执行.这有点奇怪.
我不想在关闭工作簿Workbook_BeforeClose()
之前关闭特定工作表上的工作簿或调用sub来激活该"安全"工作表.
有想法解决的人吗?这是excel中的错误吗?
我在Ubuntu上使用Eclipse Mars,需要它在每个打开的选项卡的顶部显示我的所有文件扩展名.目前,在CDT上它显示了C文件的所有文件扩展名,但隐藏了其他一些文件类型(特别是Cython文件)的扩展名.
例如:在选项卡的文件标题而不是"calibration.pyx"上,我只看到"校准".
当我去Window-> preferrences时,我无法找到解决方案.谁有想法?
我有这两行代码:
from libc.stdlib cimport malloc, calloc, realloc, free
from optv.tracking_framebuf cimport TargetArray
Run Code Online (Sandbox Code Playgroud)
PyCharm(2016.2.3专业版在Ubuntu 14.04上)没有突出显示第一个作为未解决的参考,但第二行以红色突出显示为未解析的参考.
我的TargetArray
类位于tracking_framebuf.pxd
文件中,该文件/usr/local/lib/python2.7/dist-packages/optv/
与.c,.pyx,.so文件同名.
我插入/usr/local/lib/python2.7/dist-packages/optv/
和/usr/local/lib/python2.7/dist-packages/
路径与Python解释器相关联,但该错误消息在编辑器中仍然apearing.
尽管有错误消息,但使用此setup.py脚本成功进行了cython化(以及其他文件):
# -*- coding: utf-8 -*-
from distutils.core import setup
from Cython.Distutils import build_ext
from Cython.Distutils.extension import Extension
import numpy as np
import os
inc_dirs = [np.get_include(), '.']
def mk_ext(name, files):
return Extension(name, files, libraries=['optv'], include_dirs=inc_dirs,
pyrex_include_dirs=['.'])
ext_mods = [
mk_ext("optv.tracking_framebuf", ["optv/tracking_framebuf.pyx"]),
mk_ext("optv.parameters", ["optv/parameters.pyx"]),
mk_ext("optv.calibration", ["optv/calibration.pyx"]),
mk_ext("optv.transforms", ["optv/transforms.pyx"]),
mk_ext("optv.imgcoord", ["optv/imgcoord.pyx"]),
mk_ext("optv.image_processing", ["optv/image_processing.pyx"]),
mk_ext("optv.segmentation", ["optv/segmentation.pyx"]), …
Run Code Online (Sandbox Code Playgroud) 我有一组节点和一个函数foo(u,v)
,可以确定两个节点是否相等.所谓"平等"我的意思是传递等价:
If 1==2
和2==3
则1==3
也:If 1==2
和1!=4
则2!=4
当给定一组节点时,我可以通过将每个可能的节点组合传递给图形中的所有连接组件(它返回预定结果仅用于演示目的 - 它不是真正的函数!)函数并构建所需的边缘.像这样:foo(u,v)
import networkx as nx
import itertools
from matplotlib import pyplot as plt
def foo(u, v):
# this function is simplified, in reality it will do a complex
# calculation to determine whether nodes are equal.
EQUAL_EDGES = {(1, 2), (2, 3), (1, 3), (4, 5)}
return (u, v) in EQUAL_EDGES
def main():
g …
Run Code Online (Sandbox Code Playgroud) 我的系统配置设置为希伯来语.
我希望这个函数返回一个英文字符串:
MonthName(month(ActiveSheet.Range("i9").Value)))
Run Code Online (Sandbox Code Playgroud)
但它返回希伯来月份名称.
我尝试在excel格式菜单中应用对我有用的东西,但它似乎在Vba中不起作用.我尝试的是添加另一个参数:
MonthName(month(ActiveSheet.Range("i9").Value)),"b1mmmm")
Run Code Online (Sandbox Code Playgroud)
没有运气......
我将不胜感激任何帮助.