为什么';不建议在wxPython中使用IDs?

为什么';不建议在wxPython中使用IDs?,wxpython,Wxpython,我读到这篇文章说: 3. Don't use IDs. There is very rarely a good reason to use them. 我在应用程序代码中也看到了很多wx.ID\u ANY 问题: 为什么不建议使用IDs 如果不应该使用ID,为什么库不直接在API中隐藏ID呢 您不想使用硬编码的ID,因为wxPython本身保留了一些ID。这就是为什么我们有wx.ID\u ANY。这允许wxPython获取一个未使用的ID,这可以防止冲突,也可以防止难以发现的bug 请注意,现

我读到这篇文章说:

3. Don't use IDs. There is very rarely a good reason to use them.
我在应用程序代码中也看到了很多
wx.ID\u ANY

问题:

  • 为什么不建议使用IDs

  • 如果不应该使用ID,为什么库不直接在API中隐藏ID呢


  • 您不想使用硬编码的ID,因为wxPython本身保留了一些ID。这就是为什么我们有
    wx.ID\u ANY
    。这允许wxPython获取一个未使用的ID,这可以防止冲突,也可以防止难以发现的bug


    请注意,现在不推荐使用
    wx.NewId
    ,您应该在wxpython4中使用
    wx.Window.NewControlId()

    谢谢。我认为该指南可能会更好,因为不要使用硬编码ID,因为
    wx.ID\u ANY
    仍将生成ID。顺便说一句:您提到
    wx.NewId
    是。但是,我们仍然可以使用
    wx.ID\u ANY
    ,这不是不推荐的,对吗?@Cyker wx.ID\u ANY是-1,wxPython将使用它来获取下一个可用ID。另请参见
    wx.NewIdRef()
    wx.NewIdRef(count=1)保留一个新的窗口ID(或窗口ID的范围)并返回一个wx.WindowIDRef对象(或它们的列表)这将有助于管理该ID的保留。此函数旨在作为旧的和不推荐使用的wx.NewId函数的替代品,其附加好处是该ID不应与正在使用的ID或此函数生成的其他ID冲突。