只是好奇,
使用len()或def __len__()构建课程之间有什么区别(优点和缺点)?哪个是最好的Python风格?
class foo(object):
def __init__(self,obs=[])
self.data = obs
self.max = max(obs)
self.min = min(obs)
self.len = len(obs)
Run Code Online (Sandbox Code Playgroud)
要么
class foo(object):
def __init__(self,obs=[])
self.data = obs
self.max = max(obs)
self.min = min(obs)
def __len__(self):
return len(self.data)
Run Code Online (Sandbox Code Playgroud) 我有我的项目名称,但不是数字项目ID.后者需要使用HTML Direct Links.I使用JIRA 5.0.1
如何获取给定项目名称的数字项目ID?
我搜索了项目管理区域,其他几个地方,文档,谷歌等,但仍然无法找到获得该值的方法.
谢谢.
我有一个类在类变量中跟踪它的实例,如下所示:
class Foo:
by_id = {}
def __init__(self, id):
self.id = id
self.by_id[id] = self
Run Code Online (Sandbox Code Playgroud)
我希望能够做的是迭代现有的类实例.我可以这样做:
for foo in Foo.by_id.values():
foo.do_something()
Run Code Online (Sandbox Code Playgroud)
但它看起来像这样整洁:
for foo in Foo:
foo.do_something()
Run Code Online (Sandbox Code Playgroud)
这可能吗?我尝试定义一个类方法__iter__,但这没有用.
我现在有一个非常简单的脚本,它使用以下方法计算文本文件中的行enumerate():
i = 0
f = open("C:/Users/guest/Desktop/file.log", "r")
for i, line in enumerate(f):
pass
print i + 1
f.close()
Run Code Online (Sandbox Code Playgroud)
这需要大约3分半钟才能完成大约3000万行的15GB日志文件.如果我能在两分钟或更短的时间内得到它,那将是很好的,因为这些是每日日志,我们想要进行每月分析,因此代码必须处理30个~15GB的日志 - 可能超过一个半小时,我们希望尽量减少服务器上的时间和内存负载.
我也会接受一个很好的近似/估计方法,但它需要大约4 sig fig准确...
谢谢!
这里有一个惊喜:
>>> class B:
... print(locals())
... def foo(self):
... print(locals())
... print(__class__ in locals().values())
...
{'__module__': '__main__', '__qualname__': 'B'}
>>> B().foo()
{'__class__': <class '__main__.B'>, 'self': <__main__.B object at 0x7fffe916b4a8>}
True
Run Code Online (Sandbox Code Playgroud)
似乎只是提到__class__了解析器明确检查了吗?否则我们应该得到类似的东西
NameError: name '__class__' is not defined
Run Code Online (Sandbox Code Playgroud)
实际上,如果您修改为仅检查密钥,即检查'__class__' in locals(),那么我们只self在预期范围内.
如何将这个变量神奇地注入范围?我的猜测是与此有关super- 但我没有使用super,那么为什么编译器在不需要时会在这里创建一个隐式闭包引用呢?
我在下一个情况下寻找一些帮助:
我有一些类和一些方法,语法是这样的:
class SomeClass {
public:
void doSomething(int *a);
};
Run Code Online (Sandbox Code Playgroud)
所以我想把这个方法称为
SomeClass::doSomething({ 0, 1, 2, 3, 4 });
Run Code Online (Sandbox Code Playgroud)
有可能用任何语言吗?任何(C++,C,obj-c,obj-c ++)实现都是受欢迎的!我知道这个初始化块是一个数组体,就像
int *a = { 0, 1, 2, 3, 4 };
SomeClass::doSomething(a);
Run Code Online (Sandbox Code Playgroud)
但是,我认为,如果在函数调用之前没有临时变量,接口看起来会很棒(因为我们不需要知道class-client中的参数类型).那么,有没有机会做到这一点?
如果我有一个va_list,我知道如何提取它的所有元素:
void printInts(int n,...)
{
va_list va;
va_start(va, n);
for(unsigned int i=0; i<n; i++)
{
int arg=va_arg(va, int);
printf("%d",arg);
}
va_end(va);
}
Run Code Online (Sandbox Code Playgroud)
因此,当我调用printInts(3,1,2,3)时,va_list将填充所有参数.
但是如何在不使用va_start的情况下手动填充va_list?我的意思是我想要这样的东西:
va_list va;
push_arg(va, int, 5); // And so on until I fill all parameters
...
Run Code Online (Sandbox Code Playgroud)
我需要这个,因为有一个函数接受va_list作为参数,我不知道如何填充其所有参数的va_list.
我在我学习的游戏中找到了这行代码
int charaCode = arc4random() % (126-'!'+1)+'!';
Run Code Online (Sandbox Code Playgroud)
我知道arc4random是什么,但表达式对我来说很奇怪.
是什么目的
(126-'!'+1)+'!'
Run Code Online (Sandbox Code Playgroud)
它总是评估为127.
我有一个包含许多不同类的多个文件的文件夹.这些都可以在一个大文件中,但为了使它更容易阅读,我将它分成多个文件,具体取决于类的属性.
我想将文件夹中所有文件的所有类导入到__init__文件中,以便我可以从文件夹导入任何内容,而不知道它属于哪个文件.
例:
/kitchen
+ __init__.py
+ fridge.py
+ stove.py
+ cupboard.py
Run Code Online (Sandbox Code Playgroud)
现在我必须这样做
from kitchen.fridge import milk
Run Code Online (Sandbox Code Playgroud)
当我想做的时候
from kitchen import milk
Run Code Online (Sandbox Code Playgroud)
相当于我可以通过以下方式__init__.py完成:
from kitchen.fridge import *
from kitchen.stove import *
from kitchen.cupboard import *
Run Code Online (Sandbox Code Playgroud)
然后我就能做到
from kitchen import milk
Run Code Online (Sandbox Code Playgroud)
但是我希望它能够获取文件夹中的所有文件而不必明确指定它(这样文件就可以转储到那里然后使用).
有没有办法做到这一点?
我正在研究用Python编写的某种系统服务(实际上它只是一个日志解析器).这个程序应该连续工作很长时间(希望我的意思是几天和几周没有失败和重新启动的需要).这就是为什么我担心内存消耗.
我将来自不同站点的进程内存使用情况的不同信息汇总到一个简单的函数中:
#!/usr/bin/env python
from pprint import pprint
from guppy import hpy
from datetime import datetime
import sys
import os
import resource
import re
def debug_memory_leak():
#Getting virtual memory size
pid = os.getpid()
with open(os.path.join("/proc", str(pid), "status")) as f:
lines = f.readlines()
_vmsize = [l for l in lines if l.startswith("VmSize")][0]
vmsize = int(_vmsize.split()[1])
#Getting physical memory size
pmsize = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
#Analyzing the dynamical memory segment - total number of objects in memory and heap size
h = hpy().heap()
if …Run Code Online (Sandbox Code Playgroud) python ×6
c ×2
c++ ×1
class ×1
closures ×1
coding-style ×1
enumerate ×1
function ×1
jira ×1
line-count ×1
linux ×1
optimization ×1
parameters ×1
python-3.x ×1