问题标签 [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.
iphone - 在objective-c中使用子类化能走多远?
在 iPhone 应用程序中,我需要自定义 UINavigationController 类的外观。例如,使栏和字体大小更大。我的客户真的需要这个,还有更大的按钮。
因此,我决定继承 UINavigationController,而不是从头开始编写类。我的问题是,我可以自定义任何方法或属性的默认值吗?子类化一个类时有什么限制吗?
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 数据控件对象,它需要在运行时增加额外的功能。但是,这个问题是非常笼统的。
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”
我该如何解决这个问题?
qt - 如何对小部件进行子类化以向其添加更多元素?
我正在尝试创建一个在顶部QTableView
嵌入的子类,以便在输入时过滤结果。QLineEdit
我需要我的表具有与 normal 相同的 API QTableView
,所以我想对它进行子类化,而不是对其进行子类化QWidget
和添加 a QLineEdit
and QTableView
。
我想我可以重新实现paintEvent(QPaintEvent*)
,改变QPaintEvent
'srect()
以稍微低一点( a 的高度QLineEdit
,所以它在它下面绘制)然后将它传递给QTableView::paintEvent()
,但QPaintEvent
参数只规定了需要重新绘制的区域,而不是应该绘制小部件的区域。
django - 在 Django 中过滤类和子类
我有一个带有常见问题解答应用程序的项目。该应用程序具有常见问题解答(由网站作者编写)和用户常见问题解答(由用户编写 - 不仅仅是一个聪明的名字)的模型。我想返回所有符合特定条件的条目、FAQ 或 UserFAQ,但我也想排除任何不符合特定条件的 UserFAQ。理想情况下,它看起来像:
其中“show_on_site”是只有 UserFAQ 对象才有的属性。这不起作用,因为过滤器在父类上失效,因为它不拥有该属性。这样做的最佳方法是什么?我遇到了这个片段,但这对于我想做的事情来说似乎有点过头了。
python - 如何在 Python 中对文件类型进行子类化?
file
我正在尝试对Python 中的内置类进行子类化,以向stdin
和stdout
. 这是我到目前为止的代码:
目的是在每条消息的开头添加时间戳,并将所有内容记录到日志文件中。但是,我遇到的问题是,如果我这样做:
然后当我尝试做时print 'foo'
,我得到一个ValueError: I/O operation on closed file
. 我不能有意义地调用file.__init__()
我的__init__()
,因为我不想打开一个新文件,我也不能分配self.closed = False
,因为它是一个只读属性。
我怎样才能修改它以便我可以这样做print 'foo'
,并使其支持所有标准file
属性和方法?
c# - 如何将对象“克隆”到子类对象中?
我有一个类A
和一个B
继承类A
并用更多字段扩展它的类。
拥有一个a
类型的对象A
,我如何创建一个包含该对象包含的所有数据b
的类型的对象?B
a
我已经尝试过a.MemberwiseClone()
,但这只会给我另一个类型的A
对象。而且我不能A
转换B
,因为继承关系只允许相反的转换。
这样做的正确方法是什么?
vb6 - SetWindowSubclass 正在泄漏用户对象
我正在使用Bear来检查用户对象,并且在 RemoveWindowSubclass 上 WindowProc 计数永远不会减少。USER 中的总数也是任务管理器中的用户对象。
我阅读了 Raymond 的关于在销毁窗口之前删除子类的更安全的子类化评论,但我的测试完全没有破坏它。
comctl 的工具提示类在内部使用相同的子类化 API 用于 TTF_SUBCLASS 的工具,因此如果您使用非协作工具提示,则会发生更多泄漏。
这是VB6代码
如果有人可以发表评论,那么发生了什么以及如何解决泄漏将会很棒。
如果您使用 SetWindowSubclass API 进行密集的子类化,其他任何人都会被警告。
干杯,
</wqw>
ruby-on-rails - 列出子类在 Ruby 脚本/控制台中不起作用?
这有效:
但这不是。User
是我的应用程序中的一个类。
但这确实!
这里发生了什么?我将如何列出 的子类User
?
javascript - JavaScript 对象子类
我想创建从超类 A 继承的子类 B。我的代码在这里:
运行时,显示 B 未定义。