小编Miz*_*zor的帖子

使用__init __()方法理解Python super()

我正在努力了解它的用法super().从它的外观来看,可以创建两个子类,就好了.

我很想知道以下2个孩子班级之间的实际差异.

class Base(object):
    def __init__(self):
        print "Base created"

class ChildA(Base):
    def __init__(self):
        Base.__init__(self)

class ChildB(Base):
    def __init__(self):
        super(ChildB, self).__init__()

ChildA() 
ChildB()
Run Code Online (Sandbox Code Playgroud)

python oop inheritance class super

2366
推荐指数
7
解决办法
158万
查看次数

圆线段碰撞检测算法?

我有一条从A到B的线和一条位于C的圆,半径为R.

图片

用于检查线是否与圆相交的好算法是什么?它沿圆圈边缘的坐标发生了什么?

algorithm math geometry collision-detection line

191
推荐指数
8
解决办法
14万
查看次数

使用python将文件夹添加到zip文件

我想创建一个zip文件.将文件夹添加到zip文件,然后将一堆文件添加到该文件夹​​.

所以我想最终得到一个带有文件的单个文件夹的zip文件.

我不知道在zip文件中有文件夹或谷歌的东西是不是很糟糕的做法.

我从这开始:

def addFolderToZip(myZipFile,folder):
    folder = folder.encode('ascii') #convert path to ascii for ZipFile Method
    for file in glob.glob(folder+"/*"):
            if os.path.isfile(file):
                print file
                myZipFile.write(file, os.path.basename(file), zipfile.ZIP_DEFLATED)
            elif os.path.isdir(file):
                addFolderToZip(myZipFile,file)

def createZipFile(filename,files,folders):
    curTime=strftime("__%Y_%m_%d", time.localtime())
    filename=filename+curTime;
    print filename
    zipFilename=utils.getFileName("files", filename+".zip")
    myZipFile = zipfile.ZipFile( zipFilename, "w" ) # Open the zip file for writing 
    for file in files:
        file = file.encode('ascii') #convert path to ascii for ZipFile Method
        if os.path.isfile(file):
            (filepath, filename) = os.path.split(file)
            myZipFile.write( file, filename, zipfile.ZIP_DEFLATED )

    for folder in …
Run Code Online (Sandbox Code Playgroud)

python directory zip file zipfile

45
推荐指数
5
解决办法
7万
查看次数

如何在其锚元素移动时移动WPF Popup?

我有一个像这样定义的Popup:

<Popup
    Name="myPopup"
    StaysOpen="True"
    Placement="Bottom"
    PlacementRectangle="0,20,0,20"
    PlacementTarget="{Binding ElementName=myPopupAnchor}">
    <TextBlock ... />
</Popup>
Run Code Online (Sandbox Code Playgroud)

我已经myPopupAnchor为事件MouseEnter和元素添加了事件处理程序MouseLeave.两个事件处理程序切换弹出窗口的可见性.

我的问题是myPopupAnchor的位置只在首次显示弹出窗口时被读取,或者被隐藏然后再次显示.如果锚移动,则弹出窗口不会移动.

我正在寻找解决这个问题的方法,我想要一个动人的Popup.我可以通知WPF PlacementTarget绑定已更改并应再次读取吗?我可以手动设置弹出窗口的位置吗?

目前,我有一个非常粗略的解决方法,涉及关闭然后再次打开弹出窗口,这会导致一些重新绘制问题.

wpf binding popup

45
推荐指数
5
解决办法
5万
查看次数

WPF Dockpanel第一个孩子使用剩余空间

在一个窗口中,我有一个DockPanels 列表来指定几个文件.每个DockPanel都有一个TextBox(用于路径)和一个按钮(用于浏览文件).

我重新创建了一个简单的WPF页面来解决这里的问题:

<Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="150"
    Height="22">
    <DockPanel>
        <TextBox HorizontalAlignment="Stretch"/> <!-- path to file -->
        <Button Content="..." DockPanel.Dock="Right"/> <!-- button to browse for file -->
    </DockPanel>
</Page>
Run Code Online (Sandbox Code Playgroud)

问题是我希望按钮位于文本框的右侧,但这会导致文本框非常小,因为DockPanel的LastChild是用完剩余空间的按钮.香港专业教育学院试图改变它,通过改变他们周围和设置,LastChildFill="False"但这只会导致按钮再次变小,而不是使文本框宽(甚至与HorizontalAlignment="Stretch").

我想按顺序控制的原因是我希望用户在使用tab窗口导航时到达Button之前的TextBox .我调查了设置,TabIndex但感觉很讨厌,WPF最喜欢的功能是tabindex的顺序是在XAML中定义的conrols.更不用说我可能不得不在Window中的所有内容上手动设置TabIndex.

对我来说,似乎不遵守TextBox.Horizo​​ntalAlignment的设置.如何让第一个控件尽可能多地使用空间但仍保留Tab键顺序?

wpf xaml dockpanel

31
推荐指数
2
解决办法
1万
查看次数

找到距离最远的两个点的算法

我正在寻找一种算法用于我正在制作的赛车游戏.地图/关卡/轨道是随机生成的,所以我需要找到两个位置,即开始和目标,它们利用了大部分地图.

  • 该算法是在二维空间内工作
  • 从每个点,只能遍历四个方向的下一个点; 上下左右
  • 点数既可以是阻止的也可以是非阻塞的,只能遍历非阻塞点

关于距离的计算,它不应该是缺乏更好词的"鸟道".如果它们之间存在墙(或其他阻挡区域),则A和B之间的路径应该更长.

我不确定从哪里开始,非常欢迎评论,并且建议的解决方案在伪代码中是首选.

编辑:对.在查看了gs的代码后,我又给了它一个镜头.我这次用C++写的,而不是python.但是,即使在阅读了Dijkstras算法,洪水填充Hosam Alys解决方案后,我也没有发现任何重要的区别.我的代码仍然有效,但没有你想要运行的那么快.完整的消息来源是牧场.唯一有趣的线(我猜)是第78-118行的Dijkstra变体.

但速度不是这里的主要问题.如果有人能够指出算法中的差异,我真的很感激帮助.

  • 在Hosam Alys算法中,他是从边界而不是每个节点扫描的唯一区别吗?
  • 在Dijkstras你跟踪和覆盖走的距离,但不是在洪水填充,但这就是它?

algorithm math distance path path-finding

29
推荐指数
4
解决办法
3万
查看次数

没有格式化的Java Double to String转换

我的号码是654987.它是数据库中的ID.我想将它转换为字符串.常规的Double.ToString(value)使其成为科学形式,6.54987E5.我不想要的东西.

我发现的其他格式化函数检查当前的语言环境并添加适当的千位分隔符等.由于它是一个ID,我不能接受任何格式.

怎么做?

[编辑]澄清:我正在处理一个特殊的数据库,将所有数字列视为双精度数.Double是我可以从数据库中检索的唯一(数字)类型.

java string format double

29
推荐指数
4
解决办法
9万
查看次数

将System.Windows.Media.Imaging.BitmapSource转换为System.Drawing.Image

我把两个图书馆联系在一起.一个只提供类型的输出System.Windows.Media.Imaging.BitmapSource,另一个只接受类型的输入System.Drawing.Image.

如何进行此转换?

.net c# image

27
推荐指数
2
解决办法
3万
查看次数

寻找基准测试代码片段(c ++)

我的程序中的一些加载例程需要很长时间才能完成.我想要一个快速的小片段来检查函数执行的时间.我的意思是"最好没有第三方图书馆".

也许就像花费系统时间一样简单?

start = current_system_time()
load_something()
delta = current_system_time()-start
log_debug("load took "+delta)
Run Code Online (Sandbox Code Playgroud)

编辑:有问题的目标操作系统是Windows.

c++ windows time benchmarking

25
推荐指数
3
解决办法
2万
查看次数

设计模式使用而不是多重继承

来自C++背景,我习惯了多重继承.我喜欢瞄准我脚的霰弹枪的感觉.如今,我在C#和Java中工作得更多,你只能继承一个基类但实现任意数量的接口(我的术语是否合适?).

例如,让我们考虑两个实现公共接口但不同(但需要)基类的类:

public class TypeA : CustomButtonUserControl, IMagician
{
    public void DoMagic()
    {
        // ...
    }
}

public class TypeB : CustomTextUserControl, IMagician
{
    public void DoMagic()
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这两个类都是UserControls所以我不能替换基类.两者都需要实现这个DoMagic功能.我现在的问题是该函数的两个实现都是相同的.我讨厌复制粘贴代码.

(可能的)解决方案:

  1. 我自然希望TypeATypeB共享一个共同的基类,在那里我只能写一次相同的函数定义.但是,由于只有一个基类的限制,我无法在层次结构中找到适合的位置.
  2. 人们也可以尝试实现一种复合模式.将DoMagic函数放在一个单独的帮助器类中,但这里的函数需要(并修改)相当多的内部变量/字段.将它们全部作为(参考)参数发送只会看起来很糟糕.
  3. 我的直觉告诉我,适配器模式可以在这里有一个位置,一些类在必要时在两者之间进行转换.但它也感觉很hacky.

我用语言无关来标记它,因为它适用于使用这种one-baseclass-many-interfaces方法的所有语言.

另外,请指出我是否误解了我提到的任何模式.

在C++中,我只使用私有字段创建一个类,该函数实现并将其放在继承列表中.什么是C#/ Java之类的正确方法?

language-agnostic oop design-patterns

23
推荐指数
2
解决办法
8056
查看次数