Questions tagged «base-class»

22
在Python中创建单例
这个问题不是为了讨论是否需要单例设计模式,是否是反模式,还是针对任何宗教战争,而是要讨论如何以最pythonic的方式在Python中最好地实现此模式。在这种情况下,我将“最pythonic”定义为表示它遵循“最少惊讶的原理”。 我有多个将成为单例的类(我的用例用于记录器,但这并不重要)。当我可以简单地继承或修饰时,我不希望增加gumph来使几个类杂乱无章。 最佳方法: 方法1:装饰器 def singleton(class_): instances = {} def getinstance(*args, **kwargs): if class_ not in instances: instances[class_] = class_(*args, **kwargs) return instances[class_] return getinstance @singleton class MyClass(BaseClass): pass 优点 装饰器的添加方式通常比多重继承更直观。 缺点 使用MyClass()创建的对象将是真正的单例对象,而MyClass本身是一个函数,而不是类,因此您不能从中调用类方法。也就m = MyClass(); n = MyClass(); o = type(n)();这样m == n && m != o && n != …

30
接口与基类
什么时候应该使用接口,什么时候应该使用基类? 如果我不想实际定义方法的基本实现,是否应该始终是一个接口? 如果我有猫狗班。为什么我要实现IPet而不是PetBase?我可以理解具有用于ISheds或IBarks(IMakesNoise?)的接口,因为可以将它们逐个放置在每个宠物上,但是我不知道该为通用Pet使用哪个接口。

11
指向子类的指针上的delete是否调用基类的析构函数?
我有一个class A使用堆内存分配为其字段之一。类A被实例化并作为指针字段存储在另一个类(class B。 当我完成了类B的对象时,我会调用delete,我假设它调用了析构函数...但是这是否也调用了类A的析构函数? 编辑: 从答案中,我认为(如果不正确,请编辑): delete B实例的调用B ::〜B(); 哪个电话 A::~A(); A::~A 应该显式地deleteA对象的所有堆分配的成员变量; 最终,将存储该类B实例的内存块返回到堆-当使用new时,它首先在堆上分配一个内存块,然后调用构造函数对其进行初始化,现在在所有析构函数都被调用以最终确定对象之后对象所在的块返回到堆。

8
C#类命名约定:是BaseClass还是ClassBase或AbstractClass
建议的命名基类的方法是什么?它是在类型名称前面加上“ Base ”还是“ Abstract ”,还是只是在其后缀“ Base”? 考虑以下: 类型:ViewModel例如MainViewModel,ReportViewModel 基类:BaseViewModel或ViewModelBase或AbstractViewModel 同时考虑: 类型:Product例如VirtualProduct,ExpiringProduct 基类:BaseProduct或ProductBase或AbstractProduct 您认为哪个更标准? class Entity : EntityBase { } 要么 class Entity : BaseEntity { }

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.