问题标签 [subclass]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
933 浏览

iphone - 在objective-c中使用子类化能走多远?

在 iPhone 应用程序中,我需要自定义 UINavigationController 类的外观。例如,使栏和字体大小更大。我的客户真的需要这个,还有更大的按钮。

因此,我决定继承 UINavigationController,而不是从头开始编写类。我的问题是,我可以自定义任何方法或属性的默认值吗?子类化一个类时有什么限制吗?

0 投票
8 回答
9998 浏览

subclass - 在 Python 中重新分类实例

我有一个由外部库提供给我的类。我创建了这个类的一个子类。我也有一个原始类的实例。

我现在想将此实例转换为我的子类的一个实例,而不更改该实例已有的任何属性(无论如何我的子类覆盖的属性除外)。

以下解决方案似乎有效。

但是,我不相信这个解决方案不包含我没有想到的任何警告(对不起三重否定),特别是因为重新分配魔法__class__感觉不对。即使这行得通,我也情不自禁地觉得应该有一种更 Pythonic 的方式来做到这一点。

有没有?


编辑:谢谢大家的回答。这是我从他们那里得到的:

  • 尽管通过分配给实例重新分类的想法__class__不是一个广泛使用的习惯用法,但大多数答案(在撰写本文时 6 个中有 4 个)认为它是一种有效的方法。一个答案(由 ojrac 提供)说它“乍一看很奇怪”,我同意这一点(这是提出这个问题的原因)。只有一个答案(来自 Jason Baker;有两个正面评论和投票)积极劝阻我不要这样做,但是这样做是基于示例用例而不是一般技术。

  • 没有一个答案,无论是否积极,都无法在这种方法中找到实际的技术问题。一个小例外是 jls,他提到要提防旧式类(这很可能是真的)和 C 扩展。我认为这种新风格的类感知 C 扩展应该与 Python 本身一样好(假设后者是正确的),尽管如果你不同意,请继续给出答案。

至于这是多么pythonic的问题,有一些肯定的答案,但没有给出真正的理由。看看 Zen ( import this),我想在这种情况下最重要的规则是“显式优于隐式”。不过,我不确定该规则是否支持或反对以这种方式重新分类。

  • 使用{has,get,set}attr似乎更明确,因为我们明确地对对象进行更改而不是使用魔法。

  • 使用__class__ = newclass似乎更明确,因为我们明确地说“这现在是类 'newclass' 的对象,期待不同的行为”,而不是默默地改变属性,但让对象的用户相信他们正在处理旧类的常规对象。

总结:从技术角度来看,方法似乎还可以;pythonicity问题仍然没有答案,偏向于“是”。

我接受了 Martin Geisler 的回答,因为 Mercurial 插件示例是一个非常强大的示例(也因为它回答了一个我什至还没有问过自己的问题)。但是,如果对 pythonicity 问题有任何争论,我仍然想听听。感谢所有到目前为止。

PS 实际用例是一个 UI 数据控件对象,它需要在运行时增加额外的功能。但是,这个问题是非常笼统的。

0 投票
2 回答
1184 浏览

c# - C# 从子类中获取详细信息

我是 C# 的新手,如果这看起来很奇怪,请原谅。

我有一个名为 vefHlutir 的抽象类

//Here is an object that inherits from this abstract class:

//And here is the code I'm trying to run, Item, User and Category all inherit from vefHlutir:

我的问题是我不能使用 prenta 方法。

我总是收到这些错误:

错误 1 ​​'Forsíða.preenta(System.Collections.Generic.List, System.Web.UI.WebControls.Table)' 的最佳重载方法匹配有一些无效参数

错误 2 参数“1”:无法从“System.Collections.Generic.List”转换为“System.Collections.Generic.List”

我该如何解决这个问题?

0 投票
3 回答
4625 浏览

qt - 如何对小部件进行子类化以向其添加更多元素?

我正在尝试创建一个在顶部QTableView嵌入的子类,以便在输入时过滤结果。QLineEdit我需要我的表具有与 normal 相同的 API QTableView,所以我想对它进行子类化,而不是对其进行子类化QWidget和添加 a QLineEditand QTableView

我想我可以重新实现paintEvent(QPaintEvent*),改变QPaintEvent'srect()以稍微低一点( a 的高度QLineEdit,所以它在它下面绘制)然后将它传递给QTableView::paintEvent(),但QPaintEvent参数只规定了需要重新绘制的区域,而不是应该绘制小部件的区域。

0 投票
1 回答
975 浏览

django - 在 Django 中过滤类和子类

我有一个带有常见问题解答应用程序的项目。该应用程序具有常见问题解答(由网站作者编写)和用户常见问题解答(由用户编写 - 不仅仅是一个聪明的名字)的模型。我想返回所有符合特定条件的条目、FAQ 或 UserFAQ,但我也想排除任何不符合特定条件的 UserFAQ。理想情况下,它看起来像:

其中“show_on_site”是只有 UserFAQ 对象才有的属性。这不起作用,因为过滤器在父类上失效,因为它不拥有该属性。这样做的最佳方法是什么?我遇到了这个片段,但这对于我想做的事情来说似乎有点过头了。

0 投票
2 回答
9038 浏览

python - 如何在 Python 中对文件类型进行子类化?

file我正在尝试对Python 中的内置类进行子类化,以向stdinstdout. 这是我到目前为止的代码:

目的是在每条消息的开头添加时间戳,并将所有内容记录到日志文件中。但是,我遇到的问题是,如果我这样做:

然后当我尝试做时print 'foo',我得到一个ValueError: I/O operation on closed file. 我不能有意义地调用file.__init__()我的__init__(),因为我不想打开一个新文件,我也不能分配self.closed = False,因为它是一个只读属性。

我怎样才能修改它以便我可以这样做print 'foo',并使其支持所有标准file属性和方法?

0 投票
10 回答
12861 浏览

c# - 如何将对象“克隆”到子类对象中?

我有一个类A和一个B继承类A并用更多字段扩展它的类。

拥有一个a类型的对象A,我如何创建一个包含该对象包含的所有数据b的类型的对象?Ba

我已经尝试过a.MemberwiseClone(),但这只会给我另一个类型的A对象。而且我不能A转换B,因为继承关系只允许相反的转换。

这样做的正确方法是什么?

0 投票
2 回答
1711 浏览

vb6 - SetWindowSubclass 正在泄漏用户对象

我正在使用Bear来检查用户对象,并且在 RemoveWindowSubclass 上 WindowProc 计数永远不会减少。USER 中的总数也是任务管理器中的用户对象。

我阅读了 Raymond 的关于在销毁窗口之前删除子类的更安全的子类化评论,但我的测试完全没有破坏它。

comctl 的工具提示类在内部使用相同的子类化 API 用于 TTF_SUBCLASS 的工具,因此如果您使用非协作工具提示,则会发生更多泄漏。

这是VB6代码

如果有人可以发表评论,那么发生了什么以及如何解决泄漏将会很棒。

如果您使用 SetWindowSubclass API 进行密集的子类化,其他任何人都会被警告。

干杯,
</wqw>

0 投票
4 回答
1305 浏览

ruby-on-rails - 列出子类在 Ruby 脚本/控制台中不起作用?

这有效:

但这不是。User是我的应用程序中的一个类。

但这确实!

这里发生了什么?我将如何列出 的子类User

0 投票
4 回答
6659 浏览

javascript - JavaScript 对象子类

我想创建从超类 A 继承的子类 B。我的代码在这里:

运行时,显示 B 未定义。