基于我对Python数据模型的理解,特别是"实例方法"小节,每当您读取其值为"用户定义函数"类型的属性时,一些魔法就会启动并获得绑定实例方法而不是实际方法,原始功能.这就是为什么self
在调用方法时没有显式传递参数的原因.
但是,我希望能够用具有相同签名的函数替换对象的方法:
class Scriptable:
def __init__(self, script = None):
if script is not None:
self.script = script # replace the method
def script(self):
print("greetings from the default script")
>>> scriptable = Scriptable()
>>> scriptable.script()
greetings from the default script
>>> def my_script(self):
... print("greetings from my custom script")
...
>>> scriptable = Scriptable(my_script)
>>> scriptable.script()
Traceback (most recent call last):
...
TypeError: script() takes exactly 1 positional argument (0 given)
Run Code Online (Sandbox Code Playgroud)
我正在创建一个实例Scriptable
,并script
使用单个参数将其属性设置为用户定义的函数,就像在类中定义的那样.因此,当我读取scriptable.script …
我正在寻找一种简单的方法来克隆一个IEnumerable<T>
参数供以后参考.LINQ的ToArray
扩展方法似乎是一种很好,简洁的方法.
但是,我不清楚它是否总能保证返回一个新的数组实例.一些LINQ方法将检查可枚举的实际类型,并尽可能检查快捷方式; 例如,Count()
将查看该方法是否实现ICollection<T>
,如果是,将直接读取其Count
属性; 如果必须,它只迭代集合.
鉴于实际上存在短路的心态,似乎如果我调用ToArray()
已经是数组的东西,ToArray()
可能会短路并简单地返回相同的数组实例.这在技术上可以满足ToArray
方法的要求.
从快速测试看来,在.NET 4.0中,调用ToArray()
数组确实会返回一个新实例.我的问题是,我能依靠这个吗?我是否可以保证ToArray
始终返回一个新实例,即使在Silverlight和.NET Framework的未来版本中也是如此?在这一点上是否有明确的文件?
感觉就像我必须遗漏一些东西,但是当我为WinRT代码编写单元测试时,我无法找到任何可以使用的模拟对象框架.那里有任何支持WinRT的模拟框架吗?
我知道MoqRT,但据我所知,它在构建时执行codegen(虽然通过一个脆弱的声音集成,这不是实际构建过程的一部分),但它感觉更像是一个hack而不是一个实现.
DynamicMethod(轻量级代码生成背后的类)显然在WinRT中不可用.但似乎支持表达式树,包括它们的编译方法; 所以似乎模拟对象框架应该是可行的.
那里有任何WinRT模拟框架吗?
我正在编写一个使用WebListener而不是Kestrel 的ASP.NET核心应用程序(在完整的.NET Framework上).我正在使用Visual Studio 2015和Update 3,以及".NET Core 1.0.1工具预览2" (截至本文撰写时,下载网站上的最新VS工具).
因为我正在使用WebListener,并且因为WebListener与IIS Express不兼容,所以我想在Visual Studio中禁用"IIS Express"启动配置文件,这样当我的队友打开此解决方案时,他们的Visual Studio将默认运行控制台应用程序而不是IIS Express,他们只能点击运行而不会出错.
但到目前为止,我还没有能够摆脱VS的"IIS Express"发布配置文件.项目属性>调试选项卡允许我编辑配置文件列表,但是当我选择"IIS Express"配置文件时,"删除"按钮被禁用.如果我直接编辑launchSettings.json,并从"profiles"下删除"IIS Express"元素,则File> Save操作会以静默方式将"IIS Express"配置文件插回到保存到磁盘的JSON中!
显然,Microsoft 确实希望始终拥有"IIS Express"启动配置文件,即使它不一定与所有ASP.NET Core项目兼容.但值得一提的是:有没有人找到一种方法来禁用 ASP.NET Core项目中的"IIS Express"启动配置文件,并且只有启动配置文件选择器中的自主选项?
¹对于好奇的人,我正在使用WebListener,因为它可以让我在没有安装IIS的计算机上自行托管Windows服务并仍然支持NTLM身份验证.Kestrel仅在IIS中托管时支持NTLM,而不是在自托管时支持NTLM.
我正在编写一个WPF应用程序,我希望我的一些超链接是默认的蓝色,其他的是绿色.没问题 - 我可以设置Foreground
:
<TextBlock><Hyperlink Foreground="#0C0">Mark as done</Hyperlink></TextBlock>
Run Code Online (Sandbox Code Playgroud)
麻烦的是,当我这样做时,悬停效果消失了.在普通的超链接中,当我将鼠标移到链接上时,它会变为红色,当我将鼠标移开时,它会变回蓝色.但是在分配了Foreground属性的超链接中,它始终是那种颜色 - 红色悬停被完全抑制.
如何在不丢失默认悬停行为和颜色的情况下更改超链接的颜色?
我希望能够使用最好在XAML中定义的矢量图形作为图像控件的源,就像我现在可以像PNG一样使用光栅图像.这样我就可以轻松地在位图和矢量图像之间进行混合和匹配,如下所示:
<StackPanel>
<Image Source="Images/Namespace.png"/>
<Image Source="Images/Module.xaml"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
Module.xaml很可能将<DrawingImage>
其作为根元素而不是<UserControl>
.
实际上,我真正想要的是这个,所以我的ViewModel可以自行选择光栅或矢量图像:
<Image Source="{Binding ImageUri}"/>
Run Code Online (Sandbox Code Playgroud)
这可能吗?Image.Source可以从给定的URI加载XAML类吗?或者只能加载位图资源?
在WinForms中,Form有一个ClientSize属性(继承自Control),它返回其客户区的大小,即标题栏和窗口边框内的区域.
我在WPF中没有看到任何类似的东西:没有ClientSize,ClientWidth,ClientHeight,GetClientSize(),或者我可以想到的其他任何猜测名称的东西.
如何获取WPF窗口的客户端大小?
有没有办法得到一个显示a的确切值的字符串double
,所有小数位都需要表示它在10的基本精确值?
例如(通过Jon Skeet和Tony the Pony),当你输入时
double d = 0.3;
Run Code Online (Sandbox Code Playgroud)
实际值d
是完全正确的
0.299999999999999988897769753748434595763683319091796875
Run Code Online (Sandbox Code Playgroud)
每个二进制浮点值(忽略诸如无穷大和NaN之类的东西)将解析为终止十进制值.因此,在输出中有足够的精度数字(在这种情况下为55),您可以随时获取a中的任何内容double
并以十进制显示其精确值.当需要解释浮点运算的奇怪性时,能够向人们展示确切的值是非常有用的.但有没有办法在C#中做到这一点?
我已经尝试了所有标准数字格式字符串,无论是否指定了精度,并且没有给出确切的值.一些亮点:
d.ToString("n55")
输出0.3
后跟54个零 - 它通常会"轮到您可能想要看到的内容",然后在最后添加更多的零.如果我使用自定义格式字符串,也是一样的0.00000...
d.ToString("r")
给你一个足够精确的值,如果你解析它,你会得到你开始时相同的位模式 - 但在这种情况下它只是输出0.3
.(如果我处理的是计算结果,而不是常量,这会更有用.)d.ToString("e55")
输出2.9999999999999999000000000000000000000000000000000000000e-001
- 一些精度,但不是所有它像我正在寻找.是否有一些我错过的格式字符串,或其他一些库函数,或NuGet包或其他库,能够将a转换为double
具有完全精度的字符串?
我知道最好的做法是在任何实现IDisposable的对象上调用Dispose,尤其是包装有限资源的对象,如文件句柄,套接字,GDI句柄等.
但我遇到的情况是我有一个具有Font的对象,我将不得不通过几层对象检测IDisposable,并查看很多用法,以确保我总是让Font处理掉.而且我想知道这是否值得复杂.
如果Font包装了一个HFONT,那将是一回事,因为GDI资源是系统全局的.但是Font没有包装GDI句柄; 它是GDI +,它是一个完全独立的系统,据我所知,它是流程本地的,而不是像GDI那样的系统全局.与Image不同,Font不会保留文件系统资源(我知道,无论如何).
所以我的问题是:让Font收集垃圾的实际成本是多少?
我知道我会在终结器上受到轻微的打击,但如果"泄露的"字体的数量很小(比如说6个),那么真正的打击就不会引人注意.除了终结器之外,这与分配中型阵列并让GC清理它似乎没什么不同 - 它只是内存.
在让Font得到GCed时,我不知道有什么成本吗?
我正在玩pygame,我想做的一件事就是当计算机使用电池供电时减少每秒的帧数(降低CPU使用率并延长电池寿命).
如何从Python中检测到计算机当前是否使用电池供电?
我在Windows上使用Python 3.1.