Questions tagged «oop»

面向对象的编程是一种使用“对象”的编程范式:由数据字段和方法及其相互作用组成的数据结构。

7
如何在python中实现接口?
public interface IInterface { void show(); } public class MyClass : IInterface { #region IInterface Members public void show() { Console.WriteLine("Hello World!"); } #endregion } 如何实现与C#代码等效的Python? class IInterface(object): def __init__(self): pass def show(self): raise Exception("NotImplementedException") class MyClass(IInterface): def __init__(self): IInterface.__init__(self) def show(self): print 'Hello World!' 这是一个好主意吗??请在您的答案中举例说明。
182 python  oop 

10
构造函数与工厂方法[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 2年前关闭。 改善这个问题 在对类建模时,首选的初始化方式是: 构造函数,或 工厂方法 使用这两种方法的考虑因素是什么? 在某些情况下,我更喜欢使用工厂方法,如果无法构造该对象,则该方法返回null。这使代码更简洁。我可以简单地检查返回的值是否不为null,然后再执行其他操作,这与从构造方法中引发异常形成了对比。(我个人不喜欢例外) 说,我有一个类的构造函数,它需要一个id值。构造函数使用此值从数据库填充类。如果不存在具有指定ID的记录,则构造函数将引发RecordNotFoundException。在这种情况下,我将必须将所有此类的构造包含在try..catch块中。 与此相反,我可以在这些类上使用静态工厂方法,如果未找到该记录,则该方法将返回null。 在这种情况下,构造方法或工厂方法哪种方法更好?
180 oop  ooad 


6
用多重继承调用父类__init__,正确的方法是什么?
假设我有多个继承方案: class A(object): # code for A here class B(object): # code for B here class C(A, B): def __init__(self): # What's the right code to write here to ensure # A.__init__ and B.__init__ get called? 有编写的两个典型方法C的__init__: (老式) ParentClass.__init__(self) (较新的样式) super(DerivedClass, self).__init__() 但是,在任何一种情况下,如果父类(A和B)没有遵循相同的约定,则代码将无法正常工作(某些代码可能会丢失或多次调用)。 那么又是什么正确的方法呢?说“保持一致,遵循一个或另一个”很容易,但是如果A或B来自第三方图书馆,那又如何呢?有没有一种方法可以确保所有父类构造函数都被调用(以正确的顺序,并且只能调用一次)? 编辑:看看我的意思,如果我这样做: class A(object): def __init__(self): print("Entering …

5
什么时候应该在Python中使用类?
我已经用python编程了大约两年了。主要是数据(pandas,mpl,numpy),还有自动化脚本和小型Web应用程序。我试图成为一个更好的程序员,并增加我的python知识,而困扰我的一件事是我从未使用过一个类(除了为小型Web应用程序复制随机烧瓶代码外)。我通常理解它们是什么,但是我似乎无法为为什么在一个简单的函数中需要它们的问题而wrap之以鼻。 为了使我的问题更具针对性:我编写了大量的自动报告,这些报告总是涉及从多个数据源(mongo,sql,postgres,api)中提取数据,执行一些或少量的数据整理和格式化,将数据写入csv / excel / html,通过电子邮件发送出去。脚本范围从〜250行到〜600行。我有什么理由要使用类来做到这一点吗?为什么?
174 python  oop 

13
在类方法上使用property()
我有一个带有两个类方法的类(使用classmethod()函数),用于获取和设置本质上是静态变量的东西。我试图将property()函数与这些函数一起使用,但是会导致错误。我能够在解释器中使用以下代码重现该错误: class Foo(object): _var = 5 @classmethod def getvar(cls): return cls._var @classmethod def setvar(cls, value): cls._var = value var = property(getvar, setvar) 我可以演示类方法,但是它们不能用作属性: >>> f = Foo() >>> f.getvar() 5 >>> f.setvar(4) >>> f.getvar() 4 >>> f.var Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: 'classmethod' …
173 python  oop 


10
可变对象与不可变对象
我试图让我了解可变对象和不可变对象。使用可变对象会带来很多负面影响(例如,从方法中返回字符串数组),但是我很难理解它的负面影响。使用可变对象的最佳实践是什么?您是否应尽可能避免使用它们?

17
继承和多态性之间的主要区别是什么?
今天的单元开卷考试结束时,我被问到了这个问题,结果发现自己迷路了。我正在阅读Head first Java,这两个定义似乎完全相同。我只是想知道我自己的主观差异是什么。我知道有很多与此类似的问题,但是我没有看到能提供明确答案的问题。

15
单一方法上课-最佳方法?
说我有一个旨在执行单个功能的类。执行该功能后,可以将其销毁。是否有任何理由偏爱其中一种方法? // Initialize arguments in constructor MyClass myObject = new MyClass(arg1, arg2, arg3); myObject.myMethod(); // Pass arguments to method MyClass myObject = new MyClass(); myObject.myMethod(arg1, arg2, arg3); // Pass arguments to static method MyClass.myMethod(arg1, arg2, arg3); 我故意对细节含糊不清,以尝试获取针对不同情况的指导。但是我真的没有想到像Math.random()这样的简单库函数。我在想更多的类来执行一些特定的,复杂的任务,但只需要一个(公共)方法即可。
172 c#  java  oop  static-methods 

10
何时使用静态类与实例化类
PHP是我的第一门编程语言。我不能完全确定何时使用静态类与实例化对象。 我意识到您可以复制和克隆对象。但是在我使用php的所有时间里,任何对象或函数总是以单个返回值(数组,字符串,整型)或void结束。 我了解书籍中的概念,例如电子游戏角色类。复制汽车对象并将新的红色对象设为红色,这一切都说得通,但是它不是在php和网络应用程序中的应用。 一个简单的例子。一个博客。博客的哪些对象最好实现为静态或实例化对象?DB班?为什么不只在全局范围内实例化db对象?为什么不将每个对象都设为静态呢?性能如何? 都是风格吗?有适当的方法来做这些东西吗?
170 php  oop  class 


8
将类代码分为头文件和cpp文件
我对如何将简单类的实现和声明代码分成新的标头和cpp文件感到困惑。例如,如何分隔下一个类的代码? class A2DD { private: int gx; int gy; public: A2DD(int x,int y) { gx = x; gy = y; } int getSum() { return gx + gy; } };
169 c++  oop  class 

16
Java多重继承
为了完全理解如何解决Java的多重继承问题,我有一个经典的问题需要澄清。 可以说我有类Animal此有子类Bird和Horse我需要做一个类Pegasus,从扩展Bird和Horse自Pegasus既是一只鸟和一匹马。 我认为这是经典的钻石问题。从我能理解经典的方式来解决,这是使Animal,Bird和Horse类接口,并实现Pegasus从他们。 我想知道是否还有另一种方法可以解决仍然可以为鸟和马创建对象的问题。如果有一种能够创造动物的方法,那也很棒,但不是必须的。


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.