由于我更喜欢小文件,我通常会为每个Python模块放置一个"公共"类.我将模块命名为与其包含的类相同的名称.因此,例如,ToolSet将在中定义类ToolSet.py.
在一个包中,如果另一个模块需要实例化ToolSet类的对象,我使用:
from ToolSet import ToolSet
...
toolSet = ToolSet()
Run Code Online (Sandbox Code Playgroud)
代替:
import ToolSet
...
toolSet = ToolSet.ToolSet()
Run Code Online (Sandbox Code Playgroud)
我这样做是为了减少"口吃"(我更喜欢在文件顶部比在我的代码中口吃.)
这是一个正确的习语吗?
这是一个相关的问题.在一个软件包中,我经常会有一些我希望向外界展示的课程.这些我在__init__.pyfor package中导入.例如,如果ToolSet在包中UI并且我想要公开它,我会将以下内容放入UI/__init__.py:
from ToolSet import ToolSet
Run Code Online (Sandbox Code Playgroud)
所以,从外部模块我可以写
import UI
...
toolSet = UI.ToolSet()
Run Code Online (Sandbox Code Playgroud)
再次,这是pythonic?
这是我通常做的,以确定输入是list/ tuple- 而不是a str.因为很多次我偶然发现函数str错误地传递了一个对象的bug ,而目标函数确实for x in lst假设它lst实际上是一个list或者tuple.
assert isinstance(lst, (list, tuple))
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有更好的方法来实现这一目标?
奇怪的Visual Studio(TS 2008)问题:每当我在特定项目中从Release模式切换到Debug模式时,IDE都会完全冻结.在我尝试构建或执行任何其他操作之前,它会在我切换时发生.
整个事情一开始就没有了,没有任何我能想到的异常变化.我试图清理解决方案,但它没有帮助.
有没有人遇到过这个?
我需要一个正则表达式来用逗号和/或空格分割字符串,但忽略带连字符的单词 - 最好的方法是什么?
所以,例如 - 我喜欢这个......
"foo bar, zap-foo, baz".split(/[\s]+/)
Run Code Online (Sandbox Code Playgroud)
回来
["foo", "bar", "zap-foo", "baz"]
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时它包括这样的逗号......
["foo", "bar,", "zap-foo,", "baz"]
Run Code Online (Sandbox Code Playgroud) 是否可以将值添加到ArrayList而不是使用HashMap
就像是:
<jsp:useBean id="animalList" class="java.util.ArrayList" />
<c:set target="${animalList}" value="Sylvester"/>
<c:set target="${animalList}" value="Goofy"/>
<c:set target="${animalList}" value="Mickey"/>
<c:forEach items="${animalList}" var="animal">
${animal}<br>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
现在得到错误:
javax.servlet.jsp.JspTagException: Invalid property in <set>: "null"
Run Code Online (Sandbox Code Playgroud)
谢谢
我有这个代码绘制一个矩形(我试图重新制作MS Paint)
case "Rectangle":
if (tempDraw != null)
{
tempDraw = (Bitmap)snapshot.Clone();
Graphics g = Graphics.FromImage(tempDraw);
Pen myPen = new Pen(foreColor, lineWidth);
g.DrawRectangle(myPen, x1, y1, x2-x1, y2-y1);
myPen.Dispose();
e.Graphics.DrawImageUnscaled(tempDraw, 0, 0);
g.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想绘制一个圆圈,会发生什么变化呢?
g.DrawRectangle(myPen, x1, y1, x2-x1, y2-y1);
Run Code Online (Sandbox Code Playgroud) 我需要从Flash发送一个类似于以下内容的HTTP请求(并获取XML响应):
http://example.com/somepath?data=1&data=2&data=3
Run Code Online (Sandbox Code Playgroud)
即具有多个共享相同名称但具有不同值的参数.
到目前为止,我使用以下代码来发出HTTP请求:
var resp:XML = new XML();
resp.onLoad = function(success:Boolean) {/*...*/};
resp.ignoreWhite = true;
var req:LoadVars = new LoadVars();
req["someParam1"] = 3;
req["someParam2"] = 12;
req.sendAndLoad("http://example.com/somepath", resp, "GET");
Run Code Online (Sandbox Code Playgroud)
在这种情况下,这不会:只有一个参数具有最后一个值.
我有什么选择?我正在使用动作2.
添加
我想,我可以这样做:
var url:String = myCustomFunctionForBuildingRequestString();
var resp:XML = new XML();
resp.onLoad = function(success:Boolean) {/*...*/};
resp.load(url);
Run Code Online (Sandbox Code Playgroud)
但在那种情况下,我失去了执行POST请求的能力.任何替代品?
更改请求不合适.
给出一个类:
class TCurrency {
TCurrency();
TCurrency(long);
TCurrency(const std::string);
...
};
Run Code Online (Sandbox Code Playgroud)
用Boost.Python包装:
class_<TCurrency>( "TCurrency" )
.def( init<long> )
.def( init<const std::string&> )
...
;
Run Code Online (Sandbox Code Playgroud)
是否可以创建在Python中显示为构造函数的工厂方法:
TCurrency TCurrency_from_Foo( const Foo& ) { return TCurrency(); }
Run Code Online (Sandbox Code Playgroud)
这样在python中:
bar = TCurrency(foo)
Run Code Online (Sandbox Code Playgroud) 使用jQuery我试图确定是否<div>有内容,或者,如果它确实那么我想什么都不做,但如果没有,那么我想添加display:none到它或.hide().以下是我的想法,
if ($('#left-content:contains("")').length <= 0) {
$("#left-content").css({'display':'none'});
}
这根本不起作用,如果div没有内容然后它只是出现,可以提出任何建议吗?
python ×2
actionscript ×1
assert ×1
boost-python ×1
c# ×1
constructor ×1
debug-mode ×1
drawing ×1
factory ×1
http ×1
import ×1
java ×1
javascript ×1
jquery ×1
jstl ×1
list ×1
methodology ×1
regex ×1
ruby ×1
types ×1