假设我想为类中定义的方法创建装饰器.我希望装饰器在被调用时能够在定义方法的类上设置属性(以便将其注册到用于特定目的的方法列表中).
在Python 2中,该im_class方法很好地完成了这个:
def decorator(method):
cls = method.im_class
cls.foo = 'bar'
return method
Run Code Online (Sandbox Code Playgroud)
但是,在Python 3中,似乎不存在这样的属性(或替代它).我想这个想法是你可以调用type(method.__self__)来获取类,但是这对于未绑定的方法不起作用,因为__self__ == None在那种情况下.
注意:这个问题实际上与我的情况有点无关,因为我选择在方法本身上设置属性,然后让实例扫描其所有方法,在适当的时间查找该属性.我(目前)也在使用Python 2.6.但是,我很好奇是否有替换版本2的功能,如果没有,那么完全删除它的理由是什么.
编辑:我刚发现这个问题.这使得看起来最好的解决方案就是像我一样避免它.我仍然想知道为什么它被删除了.
我有一个100 GB的文本文件,这是一个来自数据库的BCP转储.当我尝试导入它时BULK INSERT,我在行号219506324上得到了一个神秘的错误.在解决这个问题之前我想看看这行,但是我最喜欢的方法是
import linecache
print linecache.getline(filename, linenumber)
Run Code Online (Sandbox Code Playgroud)
扔了一个MemoryError.有趣的是手册上说的是"此功能将永远不会抛出异常." 在这个大文件中,当我尝试读取第1行时,它会抛出一个,我有大约6GB的可用RAM ...
我想知道到达那条无法到达的线路最优雅的方法是什么.可用的工具是Python 2,Python 3和C#4(Visual Studio 2010).是的,我明白我总能做点什么
var line = 0;
using (var stream = new StreamReader(File.OpenRead(@"s:\source\transactions.dat")))
{
while (++line < 219506324) stream.ReadLine(); //waste some cycles
Console.WriteLine(stream.ReadLine());
}
Run Code Online (Sandbox Code Playgroud)
哪个会奏效,但我怀疑这是最优雅的方式.
编辑:我正在等待关闭此线程,因为包含该文件的硬盘驱动器现在正由另一个进程使用.我将测试建议的方法和报告时间.谢谢大家的建议和意见.
结果是我实施了Gabes和Alexes方法,看看哪一个更快.如果我做错了什么,请告诉我.我正在使用Gabe建议的方法在我的100GB文件中使用第10百万行,然后使用Alex建议的方法,我将其松散地翻译成C#...我自己添加的唯一内容是,首先阅读300 MB文件到内存只是为了清除硬盘缓存.
const string file = @"x:\....dat"; // 100 GB file
const string otherFile = @"x:\....dat"; // 300 MB file
const int linenumber = 10000000;
ClearHDDCache(otherFile);
GabeMethod(file, linenumber); …Run Code Online (Sandbox Code Playgroud) 假设您正在编写一个函数来检查是否通过相应的URL访问了某个页面.该页面有一个"规范"存根 - 例如,虽然可以通过stackoverflow.com/questions/123访问页面,但我们更愿意(出于搜索引擎优化的原因)将其重定向到stackoverflow.com/questions/123/how-do -i-move-the-turtle-in-logo - 实际的重定向安全地包含在自己的方法中(例如redirectPage($ url)),但是如何正确测试调用它的函数?
例如,采用以下功能:
function checkStub($questionId, $baseUrl, $stub) {
canonicalStub = model->getStub($questionId);
if ($stub != $canonicalStub) {
redirectPage($baseUrl . $canonicalStub);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您要对checkStub()函数进行单元测试,重定向是否会妨碍?
这是一个更大问题的一部分,在这个问题中,某些功能似乎变得太大,并且离开了单元测试的领域并进入了集成测试的世界.我的想法立即认为路由器和控制器存在这些问题,因为测试它们必然导致页面的生成而不仅仅局限于它们自己的功能.
我只是在单元测试中失败了吗?
redirect unit-testing controller side-effects separation-of-concerns
如果我想使用API(而不是Web服务)从.Net应用程序(而不是Web应用程序)访问SharePoint Foundation的文档库,那么是否可以在没有IIS的情况下安装SharePoint Foundation?
我正在开发一个在线表格,其中需要验证用户输入的Medicare号码.
(我的具体问题涉及澳大利亚医疗保险号码,但我也很高兴得到有关美国医疗保险的答案.这个问题一般是关于医疗保险的数字.)
那我该怎么办呢?
(在Javascript或正则表达式中获得答案会很好.)
有没有办法通过phpquery :: newDocument运行这个html标记后修复显示不正确的字符?在使用phpquery创建新文档后,原始文档中的-Classics和现代Woman之间会出现双引号.
//Original document is UTF-8 encoded
$raw_html = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><p>Mr. Smith of Bangkok celebrated the “Classics with modern Woman”.</p></body></html>';
print($raw_html);
$aNew_document = phpQuery::newDocument($raw_html);
print($aNew_document);
Run Code Online (Sandbox Code Playgroud)
原始输出:曼谷史密斯先生庆祝"与现代女性的经典".
新文件输出:曼谷史密斯先生与现代女性一起庆祝"经典".
有没有办法通过Javascript查找银行名称和分支?
也许外部服务或完整的数据集可以在内部托管并通过JSON访问?
fma(a,b,c)相当于a*b+c除了不舍入中间结果.
你能不能给我一些算法的例子,这些算法可以从避免这种舍入中获益?
这并不明显,因为我们避免的乘法后的舍入往往比加法后的舍入更少有问题,而我们没有.
我已经创建了一个C++类(myPixmap)来封装OpenGL GLUT工具包执行的工作.display()该类的成员函数包含设置GLUT所需的大部分代码.
void myPixmap::display()
{
// open an OpenGL window if it hasn't already been opened
if (!openedWindow)
{
// command-line arguments to appease glut
char *argv[] = {"myPixmap"};
int argc = 1;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(30, 30);
glutCreateWindow("Experiment");
glutDisplayFunc(draw);
glClearColor(0.9f, 0.9f, 0.9f, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glutMainLoop();
openedWindow = true;
}
}
Run Code Online (Sandbox Code Playgroud)
传递给的显示函数glutDisplayFunc()是该类的另一个成员函数:
void myPixmap::draw(void)
{
glDrawPixels( m,n,GL_RGB,GL_UNSIGNED_BYTE, pixel );
}
Run Code Online (Sandbox Code Playgroud)
但是,Mac OS X 10.6.4上的gcc 4.2.1拒绝编译此代码,声称:
argument of type 'void (myPixmap::)()' …
我知道C是操作系统开发的标准编程语言,但出于好奇,我想知道它之前是什么.C之前用于操作系统开发的主要编程语言是什么?
javascript ×2
python ×2
validation ×2
.net ×1
bank ×1
c ×1
c# ×1
c++ ×1
class ×1
controller ×1
encoding ×1
file ×1
fma ×1
history ×1
iis ×1
numbers ×1
opengl ×1
php ×1
phpquery ×1
python-3.x ×1
redirect ×1
sharepoint ×1
side-effects ×1
unit-testing ×1