我想我无法使用Scripting.FileSystemObject类读取二进制文件.我可以用ADODB.Stream吗?
别的什么?
我想得到一个字节数组.
谢谢.
我有代码(type, handler_function)在模块加载时静态注册对,导致这样的字典:
HANDLERS = {
str: HandleStr,
int: HandleInt,
ParentClass: HandleCustomParent,
ChildClass: HandleCustomChild
}
def HandleObject(obj):
for data_type in sorted(HANDLERS.keys(), ???):
if isinstance(obj, data_type):
HANDLERS[data_type](obj)
Run Code Online (Sandbox Code Playgroud)
ChildClass从哪里继承ParentClass.问题是,由于它是一个字典,订单没有定义 - 但我如何内省类型对象来找出一个排序键?
生成的顺序应该是超类的子类(首先是大多数特定类型).例如,str之前basestring和ChildClass之前ParentClass.如果类型不相关,那么它们相对于彼此的位置并不重要.
我有以下(简化)风格:
<Style x:Key="MyStyle" TargetType="{x:Type CheckBox}">
<Setter Property="Background" Value="Blue" />
</Style>
Run Code Online (Sandbox Code Playgroud)
如果我在DataGridCheckBoxColumn中将它用作ElementStyle AND EditingElementStyle:
<DataGridCheckBoxColumn Binding="{Binding IsEnabled}"
ElementStyle="{StaticResource MyStyle}"
EditingElementStyle="{StaticResource MyStyle}" />
Run Code Online (Sandbox Code Playgroud)
然后,IsEnabled当我选中/取消选中行的复选框时,我的绑定不会切换.如果我删除ElementStyle,EditingElementStyle或两者,那么绑定更新没有问题.为什么是这样?!
此外,我尝试使用以下代码解决此问题:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsEnabled}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在.
对于我来说,使用动态类型语言(对象或查找该对象的键)的参数似乎很常见.例如,当我使用数据库时,我可能有一个方法getMyRelatedStuff(person)
所有我真的需要查找相关的东西是该人的id所以我的方法在python中看起来像这样:
def getMyRelatedStuff(person_or_id):
id = person_or_id.id if isinstance(person,User) else person_or_id
#do some lookup
Run Code Online (Sandbox Code Playgroud)
或者走另一个方向:
def someFileStuff(file_or_name):
file = file_or_name if hasattr(file,'write') else open(file_or_name)
Run Code Online (Sandbox Code Playgroud)
编辑:我正在寻找一个内置的语法,我能想到的最接近的是C#中的隐式和显式关键字,允许您定义类型之间的强制转换.
我想知道如何在Python中工作的一些细节.
我的理解是for var in iterable每次迭代都会创建一个变量var,绑定到iterable的当前值.因此,如果这样做for c in cows; c = cows[whatever],但在循环内更改c不会影响原始值.但是,如果要为字典键分配值,它似乎会有所不同.
cows=[0,1,2,3,4,5]
for c in cows:
c+=2
#cows is now the same - [0,1,2,3,4,5]
cows=[{'cow':0},{'cow':1},{'cow':2},{'cow':3},{'cow':4},{'cow':5}]
for c in cows:
c['cow']+=2
# cows is now [{'cow': 2}, {'cow': 3}, {'cow': 4}, {'cow': 5}, {'cow': 6}, {'cow': 7}
#so, it's changed the original, unlike the previous example
Run Code Online (Sandbox Code Playgroud)
我看到一个人可以使用枚举来使第一个例子工作,但我想这是一个不同的故事.
cows=[0,1,2,3,4,5]
for i,c in enumerate(cows):
cows[i]+=1
# cows is now [1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
为什么它会影响第二个示例中的原始列表值而不是第一个?
[编辑]
谢谢你的回答.我从PHP的角度来看这个,你可以在foreach中使用&符号来指定你是在操作迭代的引用还是副本.我现在看到真正的区别是python如何处理不可变对象的基本细节.
我正在尝试管理用户执行命令时指定的众多参数.到目前为止,我一直试图限制我的脚本设计来管理参数作为标志,我可以使用Getopt :: Long轻松管理,如下所示:
GetOptions ("a" => \$a, "b" => \$b);
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我可以检查是否指定了a或b,然后执行相应的代码/功能.
但是,我现在有一种情况,用户可以指定两个参数变量,如下所示:
command -a black -b white
Run Code Online (Sandbox Code Playgroud)
这很好,但是我无法想出一个好方法来确定是先指定-a还是-b.因此,我不知道参数变量是在我执行时分配$ARGV[0]还是$ARGV[1]在分配之后GetOptions ("a" => \$a, "b" => \$b);.
在上面的示例中,如何判断哪个变量与哪个变量相关-a联-b?
我正试图在Io中定义自己的运算符,而且我很难过.我有一个对象:
MyObject := Object clone do(
lst := list()
!! := method(n, lst at(n))
)
Run Code Online (Sandbox Code Playgroud)
但是当我打电话给它时,像这样:
x := MyObject clone do(lst appendSeq(list(1, 2, 3)))
x !! 2
Run Code Online (Sandbox Code Playgroud)
但我得到一个例外,参数0到at必须不是nil.我该怎么办?
所以我在这里说我不是专业编码员.我是一个业余爱好者.和其他人一样,我觉得我做错了.
就像这个问题一样,如果我开始有这样的感觉,我就不是一个优秀的程序员.现在我基本上知道他们说你不应该担心,即使你不断怀疑自己,你也应该好.但是,他们正在和他说话.我不喜欢他(从某种意义上来说,我更像是一个新手)...我已经作为业余爱好者编写了3年(3个业余爱好者,请注意你!),不像他说的10-11岁.
另外,我可能深入阅读的唯一内容是在21天内自学C++.在我继续之前,为什么你不会对我在(主要是)iPhone和OpenGL上发布的各种问题感到困惑,我已经对这两件事情进行了几个月的探讨,并最终对两者都有所了解.他们.但是,从我注意到的是,我是在制作好的代码.对我而言,我甚至不讨论我是否做错了:我可以告诉我(从我创建的各种意大利面条代码和其他各种差异我和其他人可以看到并在我的代码中注明).什么是摆脱我的这些可怕习惯并以更正确的方式做到这一点的好方法,或者如果没有"正确的方法"那么我的意思是"典型的",方式?