__slots__Python中的目的是什么- 特别是关于我何时想要使用它,何时不想使用它?
我遇到了很多优化提示,说明你应该将你的课程标记为密封以获得额外的性能优势.
我运行了一些测试以检查性能差异,但没有找到.难道我做错了什么?我错过了密封课程会给出更好结果的情况吗?
有没有人进行测试并看到了差异?
帮我学习:)
我想知道.Net框架中大量密封类背后的动机是什么.密封课程有什么好处?我无法理解如何不允许继承有用,而且很可能不是唯一一个与这些类斗争的人.
那么,为什么框架以这种方式设计并且不会是开启一切的不间断的变化?必须有另一个原因,但只是邪恶?
我只是想知道,因为密封关键字的存在表明它是类作者关于是否允许其他类继承它的决定,为什么默认情况下没有类密封,有一些关键字将它们显式标记为可扩展?
我知道它有些不同,但访问修饰符以这种方式工作.默认情况下是限制性的,只有通过插入关键字才能获得更全面的访问权限.
尽管如此,我很有可能没有想到这一点,所以请保持人性化!
.Net框架中的大量类被标记为"已密封",从而阻止您使用自己的类继承这些类.当然,这违背了面向对象的本质,您可以在其中扩展和重新定义现有对象的行为.
是否有充分的理由存在'sealed'关键字?
例如,Silverlight中的NotifyCollectionChangedEventArgs是密封的.我想创建自己的ObservableCollection版本,它支持AddRange和RemoveRange,但NCCEA的Silverlight版本不提供支持NewItems和OldItems属性的多个项目的构造函数,这些项目已经被定义为IList.通常,我只是用我自己的变体扩展了类,它覆盖了NewItems和OldItems属性,但是在这种情况下我不能,而且我看不出为什么会出现这种情况.
我正在阅读有关如何处理想要在.NET Framework库中扩展密封类的问题的地方.
这通常是一项常见且有用的任务,所以它让我思考,在这种情况下,有什么解决方案?我相信在我读过的文章中有一种"方法"可以扩展密封类,但我现在不记得了(它不是扩展方法).
还有其他方法吗?谢谢
密封课程不是我过去常常注意到的事情,但我发现自己想知道什么是最佳实践.如果你知道一个课程不会或不应该从中得出你是否会密封它作为一个预防措施,只需留下密封的关键字,知道有人试图从中获取的机会很小.
我想我要问的是,你是否应该密封所有不用于继承的课程,只是作为一种良好的做法?
我正在尝试自己学习Python,因此,我得到了一个用C#编写的软件,并试图用Python重新编写它.鉴于以下课程,我有几个问题:
C#
sealed class Message
{
private int messageID;
private string message;
private ConcurrentBag <Employee> messageFor;
private Person messageFrom;
private string calltype;
private string time;
public Message(int iden,string message, Person messageFrom, string calltype,string time)
{
this.MessageIdentification = iden;
this.messageFor = new ConcurrentBag<Employee>();
this.Note = message;
this.MessageFrom = messageFrom;
this.CallType = calltype;
this.MessageTime = time;
}
public ICollection<Employee> ReturnMessageFor
{
get
{
return messageFor.ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
在我的类中,我有一个名为messageFor的线程安全集合,在Python中是否存在等价物?如果是这样,我如何在python类中实现它?
我的线程安全集合也有一个吸气剂?我如何在Python中做同样的事情?
Python有一个EqualsTo方法来测试对象之间的相等性吗?或者相当于Python中的这个?
public override bool Equals(object obj)
{
if (obj == null)
{
return …Run Code Online (Sandbox Code Playgroud).net ×4
c# ×4
performance ×2
python ×2
sealed ×2
frameworks ×1
inheritance ×1
keyword ×1
oop ×1
optimization ×1
slots ×1