我认为大多数编码人员使用的代码如下所示: ArrayList<String> myStringList = getStringList(); for(String str : myStringList) { doSomethingWith(str); } 我怎样才能利用我自己的类的每个循环? 有一个我应该实现的接口?
我试图做相当于 if ( object1.class == object2.class ) { //do something } 这当然不起作用,我忽略了什么方法?
我希望能够创build一个类(以Python),一旦用__init__初始化,不接受新的属性,但接受现有属性的修改。 有几种黑客方式我可以看到这样做,例如有一个__setattr__方法,如 def __setattr__(self, attribute, value): if not attribute in self.__dict__: print "Cannot set %s" % attribute else: self.__dict__[attribute] = value 然后直接在__init__编辑__dict__ ,但是我想知道是否有一个“正确”的方法来做到这一点?
我有一个类,我们称之为LineGraph,它呈现一个线条图。 我需要inheritance它,但派生类只在一个地方使用,并耦合到使用它的类。 所以我正在使用一个内部类。 我看到两种方法来做到这一点: 匿名的内部类 public class Gui { LineGraph graph = new LineGraph() { // extra functionality here. }; } 命名的内部类 public class Gui { MyLineGraph graph = new MyLineGraph(); private class MyLineGraph extends LineGraph { // extra functionality here. } } 我不是匿名的内部类的粉丝,因为坦率地说,我认为它看起来真的很丑。 但是对于只在一个地方使用的子类来说,是一个命名的内部类的矫枉过正? 什么是公认的做法?
我正在学习Python,到目前为止,我可以告诉下面关于__new__和__init__ : __new__是用于创build对象的 __init__用于对象初始化 在__init__之前调用__new__因为__new__返回一个新的实例,之后调用__init__来初始化内部状态。 __new__适用于不可变对象,因为它们一旦被赋值就不能被修改。 所以我们可以返回具有新状态的新实例。 我们可以使用__new__和__init__这两个可变对象,因为它的内部状态是可以改变的。 但是我现在还有其他问题。 当我创build一个新的实例如a = MyClass("hello","world") ,这些参数是如何传递的? 我的意思是我应该如何使用__init__和__new__构造类,因为它们是不同的,除了缺省的第一个参数,它们都接受任意的参数。 self关键字是在名称方面可以改成别的东西? 但是我想知道cls在名称方面是可以改变的,因为它只是一个参数名称? 我做了一些如下的实验: >>> class MyClass(tuple): def __new__(tuple): return [1,2,3] 我在下面做了: >>> a = MyClass() >>> a [1, 2, 3] 尽pipe我说我想返回tuple ,这个代码工作正常,并返回我[1,2,3] 。 我知道,一旦调用了__new__函数,我们将第一个参数作为我们想要接收的types传递。 我们在谈论Newfunction的权利? 我不知道其他语言返回types以外的绑定types? 我也做了一些其他的事情: >>> issubclass(MyClass,list) False >>> issubclass(MyClass,tuple) True >>> isinstance(a,MyClass) False >>> isinstance(a,tuple) False >>> isinstance(a,list) […]
使用嵌套的公共C ++类和枚举的优点和缺点是什么? 例如,假设您有一个名为printer的类,并且此类还存储输出托盘上的信息,则可以有: class printer { public: std::string name_; enum TYPE { TYPE_LOCAL, TYPE_NETWORK, }; class output_tray { … }; … }; printer prn; printer::TYPE type; printer::output_tray tray; 或者: class printer { public: std::string name_; … }; enum PRINTER_TYPE { PRINTER_TYPE_LOCAL, PRINTER_TYPE_NETWORK, }; class output_tray { … }; printer prn; PRINTER_TYPE type; output_tray tray; 我可以看到嵌套私有枚举/类的好处,但是当涉及到公共的时候,办公室是分裂的 […]
在python中使用用户定义的类可sorting和/或可sorting时,需要重写/实现哪些方法? 有什么需要注意的? 我在我的解释器中键入dir({})以获取内置字典中的方法列表。 其中,我假设我需要一些实现一些子集 ['__cmp__', '__eq__', '__ge__', '__gt__', '__hash__', '__le__', '__lt__', '__ne__'] Python3与Python2相比,在哪些方法中必须实现差异?
为什么基于类的OO如此受欢迎,而不是基于原型的OO? 他们是否在学校教授后者? 尽pipeJavascript是基于原型的,但大多数人都是在function上使用它,或者通过尝试模拟基于类的系统的框架来使用它。 我知道Sun已经对自我进行了一些研究 – 在基于原型的oo上是否还有其他的知识来源? 最好是自学的东西。 我find了一本包含已发表论文的书: 基于原型的程序devise:概念,语言和应用程序 有没有人读过它? – 所以我给了我最多的答案。 不过,我并不是很满意。 我本来希望听到更多的技术性的答案。 也许我没有解释得很清楚。
我已经多次看到一个从类生成的接口实例。为什么在这个方面使用接口呢?一个接口实例只在派生类的帮助下创build自己,我们只能通过这个实例访问这个接口成员。给我一个好处?我很困惑.. interface IPrint { void Print(); } class Sample : IPrint { public void Print() { Console.WriteLine("Print…"); } public void Sample() { Console.WriteLine("Sample…"); } } class Program { static void Main(string[] args) { IPrint print = new Sample(); print.Print(); } }
我想在我的一个类中访问类常量: const MY_CONST = "value"; 如果我有一个variables,它包含这个常量的名字,如下所示: $myVar = "MY_CONST"; 我可以以某种方式访问MY_CONST的值吗? self::$myVar 不明显,因为它是静态属性。 variablesvariables也不起作用。