Tag: oop

Python中的“public”或“private”属性? 什么是最好的方法?

在Python中,我有以下示例类: class Foo: self._attr = 0 @property def attr(self): return self._attr @attr.setter def attr(self, value): self._attr = value @attr.deleter def attr(self): del self._attr 正如你所看到的,我有一个简单的“私人”属性“_attr”和一个属性来访问它。 有很多代码来声明一个简单的私有属性,我认为它不尊重“KISS”哲学来声明所有属性。 那么,如果我不需要一个特定的getter / setter / deleter,为什么不把所有的属性声明为公共属性呢? 我的答案是:因为封装原则(OOP)否则说! 什么是最好的方法 ?

我怎样才能在Perl中unbless一个对象?

来自perldoc -f保佑 : bless REF,CLASSNAME 这个函数告诉REF现在引用的东西 CLASSNAME包中的一个对象。 没有不必要的复制,有没有办法获得一个没有结构的结构?

一个静态类如何从一个对象派生?

我想通过静态类inheritance非静态类。 public class foo { } public static class bar : foo { } 我得到: 静态类不能从types派生。 静态类必须从对象派生。 我如何从对象中派生出来? 代码是用C#编写的。

调用类方法时调用“未定义的函数”错误

这是错误Fatal error: Call to undefined function assign( 这是代码,你可以看到我显然已经定义了这个函数,所以为什么它不工作 class shades { function create($name, $shades, $slug, $shortDesc, $longDesc, $position){ $name = sanitize_paranoid_string($name); $slug = slug($name); $shortDesc = sanitize_sql_string($shortDesc); $longDesc = sanitize_sql_string($longDesc); $query = mysql_query("INSERT INTO products (type, name, slug, shortDesc, htmlDesc, position)VALUES('shades','$name','$slug','$shortDesc','$longDesc','$position')")or die(mysql_error()); $ID = mysql_insert_id(); assign($shades, $ID); if($query) {return true;} else {return false;}; } function […]

在构造函数中做什么(不)

我想问你关于C ++构造函数的最佳实践。 我不太清楚我应该在构造函数中做什么,什么不是。 我应该只使用它的属性初始化,调用父构造函数等? 或者,我甚至可以把更复杂的function,如读取和parsingconfiguration数据,设置外部库aso 还是应该为此编写特殊function? RESP。 init() / cleanup() ? 什么是PRO和CON在这里? 我想通过使用init()和cleanup() ,例如我可以摆脱共享指针。 我可以创build堆栈中的对象作为类属性,并在构造完成后对其进行初始化。 如果我在构造函数中处理它,我需要在运行时实例化它。 然后我需要一个指针。 我真的不知道如何决定。 也许你可以帮我吗?

PHP是面向对象的吗?

PHP是一种面向对象的语言吗? 如果没有,那么CakePHP的框架呢? 它是PHP的面向对象的MVC实现吗? 另外,完全使用类构build的PHP应用程序可以称为面向对象吗?

我如何访问一个类的私有构造函数?

我是一名Java开发人员。 在一次采访中,我被问到一个关于私人构造函数的问题: 你可以访问一个类的私有构造函数并实例化它吗? 我回答“不”,但是错了。 你能解释我为什么错了,给一个实例化一个私有构造函数的对象的例子吗?

三重inheritance导致元类冲突…有时

看起来我偶然发现了一个元类的地狱,即使我不想和它有任何关系。 我正在使用PySide在Qt4中编写一个应用程序。 我想将事件驱动的部分从Qt Designer文件生成的UI定义中分离出来。 因此,我创build了一个“控制器”类,但为了缓解我的生活,我多次inheritance它们。 一个例子: class BaseController(QObject): def setupEvents(self, parent): self.window = parent class MainController(BaseController): pass class MainWindow(QMainWindow, Ui_MainWindow, MainController): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) self.setupEvents(self) 这按预期工作。 它也有从( QDialog , Ui_Dialog , BaseController )inheritance。 但是,当我的子类BaseController并尝试从所述的子类(代替BaseController )inheritance,我收到一个错误: TypeError:调用元类时出错基类元类冲突:派生类的元类必须是其所有元的元类的(非严格)子类 说明: QMainWindow和QDialog都从QObjectinheritance。 由于Qt事件系统的特性, BaseController也必须inheritance它。 Ui_类只能从简单的Python对象类inheritance。 我寻找解决scheme,但都涉及故意使用元类的情况。 所以我一定在做一些非常错误的事情。 编辑:我的描述可能会更清楚通过添加graphics。 工作示例: QObject | \___________________ | object | QMainWindow […]

为什么我们将一个父引用分配给Java中的子对象?

我在问一个很简单的问题,但是我有点困惑。 假设我有一个class级Parent : public class Parent { int name; } 并有另一个类Child.java : public class Child extends Parent{ int salary; } 最后是我的Main.java类 public class Main { public static void main(String[] args) { Parent parent = new Child(); parent.name= "abcd"; } } 如果我做一个孩子的对象 Child child = new Child(): 然后, child对象可以访问name and salaryvariables。 我的问题是: Parent parent = new […]

我应该在这种情况下使用嵌套类吗?

我正在研究用于video回放和录制的类的集合。 我有一个像公共接口一样的主类,有play() , stop() , pause() , record()等方法。然后我有一些主要的类来完成video解码和video编码。 我刚刚学习了C ++中嵌套类的存在,我很想知道程序员是怎么想的。 我有点小心翼翼,不确定它的好处/缺点,但是根据我正在阅读的书,它们似乎被用在我的例子中。 本书提出,在像我这样的场景中,一个好的解决scheme是将嵌套在接口类中的主力类,所以没有单独的客户端不想使用的类的文件,并避免任何可能的命名冲突? 我不知道这些理由。 嵌套类对我来说是一个新概念。 只是想看看程序员怎么看待这个问题。