我注意到我写的一个Python脚本是松散的,并将其追溯到一个无限循环,循环条件是while line is not ''
.在调试器中运行它,事实证明该行''
.当我改为!=''
而不是is not ''
,它工作得很好.
另外,通常认为默认情况下使用'=='会更好,即使在比较int或Boolean值时也是如此?我一直喜欢使用'是'因为我发现它更美观和pythonic(这就是我陷入这个陷阱...),但我想知道它是否只是为了保留当你关心找到两个具有相同id的对象.
我有一个未使用创建的项目ng new
(相反,我遵循了快速入门指南).当我在该项目中运行一个角度CLI命令(例如ng generate
)时,我收到以下错误消息:
您必须在angular-cli项目中才能使用generate命令.
有没有办法可以将现有项目转变为角度cli项目?(我想尝试使用它,因为它显然会自动解决桶进口和SystemJS的问题.)
我意识到在大多数情况下,在Python中首选只是直接访问属性,因为没有像Java等那样真正的封装概念.但是,我想知道是否没有任何异常,特别是对于具有不同实现的抽象类.
假设我正在编写一堆抽象类(因为我是),并且它们表示与版本控制系统(如存储库和修订版)有关的事情(因为它们确实如此).像SvnRevision和HgRevision以及GitRevision这样的东西在语义上非常紧密地联系在一起,我希望它们能够做同样的事情(这样我就可以将代码放在其他任何类型的Repository对象上,并且不可知子类),这就是为什么我希望它们从抽象类继承.但是,它们的实现差异很大.
到目前为止,已实现的子类共享许多属性名称,并且在类本身之外的许多代码中,使用直接属性访问.例如,Revision的每个子类都有author属性和date属性,依此类推.但是,抽象类中的任何位置都不会描述这些属性.在我看来,这似乎是一个非常脆弱的设计.
如果有人想编写Revision类的另一个实现,我觉得他们应该只通过查看抽象类就可以这样做.但是,满足所有抽象方法的类的实现几乎肯定会失败,因为作者不会知道他们需要名为"author"和"date"等属性,因此尝试访问Revision的代码.作者将抛出异常.可能不难发现问题的根源,但仍然很烦人,而且感觉就像一个不雅的设计.
我的解决方案是为抽象类(get_id,get_author等)编写访问器方法.我认为这实际上是一个非常干净的解决方案,因为它消除了对属性命名和存储方式的任意限制,并且只是明确了对象需要能够访问的数据.任何实现抽象类的所有方法的类都可以工作......感觉正确.
无论如何,我正在工作的团队讨厌这个解决方案(似乎因为访问者是untythonic的原因,我无法真正争辩).那么......有什么选择呢?文档?或者是我想象的问题是什么?
注意:我考虑了属性,但我认为它们不是一个更清洁的解决方案.
我知道我能做到这一点......
if diff -q $f1 $f2
then
echo "they're the same"
else
echo "they're different"
fi
Run Code Online (Sandbox Code Playgroud)
但是,如果我想否定我正在检查的条件呢?即这样的事情(显然不起作用)
if not diff -q $f1 $f2
then
echo "they're different"
else
echo "they're the same"
fi
Run Code Online (Sandbox Code Playgroud)
我可以这样做......
diff -q $f1 $f2
if [[ $? > 0 ]]
then
echo "they're different"
else
echo "they're the same"
fi
Run Code Online (Sandbox Code Playgroud)
我在哪里检查前一个命令的退出状态是否大于0.但这感觉有点尴尬.有没有比较惯用的方法呢?
我决定将Django 1.2项目更新为Django 1.3,以利用新的静态文件机制.我删除了旧版本的Django,并按照文档的说明从svn安装开发版本.
这些变化似乎已经发生了变化.也就是说,python -c"import django; print django.get_version()"产生"1.3 alpha 1 SVN-14686".然而,我似乎无法利用旧项目中的1.3功能.如果我做"python manage.py collectstatic --help"我得到"未知命令:'collectstatic'".
我尝试创建一个新项目并做同样的事情,并且collectstatic命令工作.我挖到了django.core.management,但实际上并没有真正理解它.get_commands()的docstring提到:
字典在第一次调用时缓存,并在后续调用中重用.
也许这完全无关紧要,但我想知道我的问题是否与缓存有关(也就是说,旧版本的命令字典是缓存的,它没有新的1.3命令?).有什么想法吗?
例如,UI Bootstrap有一个名为'typeahead'的指令,它建议字段的值.假设我想制作一个指令,我可以将其用作元素的属性,这将导致为该元素建议颜色.
这是一次失败的尝试......
指示:
angular.module('myApp')
.directive('suggestcolors', function () {
return {
compile: function compile(element, attrs) {
attrs.$set("typeahead", "color for color in ['red', 'blue', 'green']");
}
};
});
Run Code Online (Sandbox Code Playgroud)
视图:
<textarea ng-model="foo" suggestcolors></textarea>
Run Code Online (Sandbox Code Playgroud)
当我检查textarea时,属性已设置,但它没有做任何事情.如果我将更改移动到链接功能,也会发生同样的事情.直接在视图中设置typeahead属性按预期工作:
<textarea ng-model="foo" typeahead="color for color in ['red', 'blue', 'green']"></textarea>
Run Code Online (Sandbox Code Playgroud)
(但我希望能够动态插入此属性,原因是DRY.我的实际用例比这更复杂.)
假设我要绘制一个条形图,其中条形的色调代表一些连续的数量。例如
import seaborn as sns
titanic = sns.load_dataset("titanic")
g = titanic.groupby('pclass')
survival_rates = g['survived'].mean()
n = g.size()
ax = sns.barplot(x=n.index, y=n,
hue=survival_rates, palette='Reds',
dodge=False,
)
ax.set_ylabel('n passengers')
这里的传说有点愚蠢,我绘制的柱数越多,情况就越糟。最有意义的是颜色条(例如在调用时使用的颜色条sns.heatmap
)。有没有办法让seaborn做到这一点?
python ×4
angular ×1
angular-cli ×1
angular-ui ×1
angularjs ×1
attributes ×1
bash ×1
comparison ×1
conditional ×1
django ×1
equality ×1
inheritance ×1
interface ×1
javascript ×1
seaborn ×1
string ×1