Questions tagged «methods»

方法是执行任务并与类或对象相关联的代码块。它与功能和过程的非面向对象的概念有关。

6
C ++枚举类可以有方法吗?
我有一个带有两个值的枚举类,并且我想创建一个接收一个值并返回另一个值的方法。我还想保持类型安全(这就是为什么我使用enum类而不是enums的原因)。 http://www.cplusplus.com/doc/tutorial/other_data_types/没有提及任何方法,但是,我的印象是任何类型的类都可以具有方法。
144 c++  methods  enums 


1
使用Moq验证方法调用
我对使用C#进行单元测试和学习使用Moq相当陌生。下面是我要测试的课程。 class MyClass { SomeClass someClass; public MyClass(SomeClass someClass) { this.someClass = someClass; } public void MyMethod(string method) { method = "test" someClass.DoSomething(method); } } class Someclass { public DoSomething(string method) { // do something... } } 以下是我的TestClass: class MyClassTest { [TestMethod()] public void MyMethodTest() { string action="test"; Mock<SomeClass> mockSomeClass …
142 c#  testing  methods  moq 

8
未绑定方法f()必须以fibo_实例作为第一个参数调用(取而代之的是class classobj实例)
在Python中,我尝试在类中运行方法,但出现错误: Traceback (most recent call last): File "C:\Users\domenico\Desktop\py\main.py", line 8, in <module> fibo.f() TypeError: unbound method f() must be called with fibo instance as first argument (got nothing instead) 代码:(swineflu.py) class fibo: a=0 b=0 def f(self,a=0): print fibo.b+a b=a; return self(a+1) 脚本main.py import swineflu f = swineflu fibo = f.fibo …
139 python  methods 


9
为什么将静态方法视为方法?
我正在为某门课程的一些代码编写解释,并且偶然使用了这些单词method并且function可以互换使用。我决定回过头来修正措辞,但在我的理解上遇到了一个漏洞。 据我了解,子例程是一个function如果它不作用于一个类的实例(其作用仅限于其显式输入/输出),并且是一个method如果它作用于一个类的实例(它可能带有消除导致实例不纯的副作用)。 关于这个话题,这里有很好的讨论。请注意,根据接受的答案的定义,静态method实际上应该是一个函数,因为永远不会隐式传递实例,并且它无法访问任何实例的成员。 有了这个主意,静态不应该methods是函数吗? 根据它们的定义,它们不作用于类的特定实例;他们只是因为关系而“束缚”在班上。我见过一些外观不错的站点,尽管它们将静态子例程称为“方法”(Oracle,Fredosaurus,ProgrammingSimplified),所以它们要么都忽略了术语,要么我就漏掉了一些东西(我猜是后者) 。 我想确保我使用的措词正确。 有人可以清除吗?

16
属性与方法
快速提问:您何时决定使用属性(在C#中)以及何时决定使用方法? 我们正忙于这场辩论,并发现了我们应该使用财产还是方法值得商de的地方。一个例子是这样的: public void SetLabel(string text) { Label.Text = text; } 在示例中,Label是ASPX页面上的控件。是否有一个原则可以支配决策(在这种情况下)是将其设为方法还是属性。 我将接受最普遍,最全面的答案,但这也涉及到我给出的示例。
135 c#  properties  methods 



7
在C#中仅将类型作为参数传递
假设地,我这样做很方便: foo.GetColumnValues(dm.mainColumn, int) foo.GetColumnValues(dm.mainColumn, string) 其中,GetColumns方法将根据传递的类型在内部调用其他方法。 是的,我可以将其作为布尔标志或类似的标志来实现,我只是想知道是否有一种方法可以通过此方法,然后问: typeof(arg [1])或类似的... 我也可以重写该方法,使用泛型,等等-我知道有不同的方法可以做到这一点,我只是好奇这是否可行。
128 c#  types  methods  parameters 

7
最终静态方法的行为
我一直在使用静态方法修改器,并且遇到了奇怪的行为。 众所周知,静态方法不能被覆盖,因为它们与类而不是实例相关联。 因此,如果我具有以下代码段,则可以正常编译 //Snippet 1 - Compiles fine public class A { static void ts() { } } class B extends A { static void ts() { } } 但是,如果我在类A中包含了对静态方法的final修饰符,则编译失败 ,B中的ts()无法覆盖A中的ts();覆盖的方法是static final。 当根本无法覆盖静态方法时,为什么会发生这种情况?
123 java  methods  static  final 

10
如何在Python中获取实例变量?
Python中是否有内置方法来获取所有类的实例变量的数组?例如,如果我有以下代码: class hi: def __init__(self): self.ii = "foo" self.kk = "bar" 有没有办法让我做到这一点: >>> mystery_method(hi) ["ii", "kk"] 编辑:我最初是错误地要求类变量。

12
Java接口中的可选方法
据我了解,如果您使用Java实现接口,则实现该接口的子类必须使用该接口中指定的方法。 我注意到在某些接口(例如Collection接口)中,有一些方法被注释为可选方法,但这到底是什么意思?我觉得接口中指定的所有方法都需要吗?
120 java  methods  interface 

6
在Python中,什么时候应该使用函数而不是方法?
Python的Zen指出,只有一种方法可以做事情-但我经常遇到决定何时使用函数以及何时使用方法的问题。 让我们举一个简单的例子-ChessBoard对象。假设我们需要某种方式使董事会上所有合法的King举动均可用。我们是否编写ChessBoard.get_king_moves()或get_king_moves(chess_board)? 这是我看过的一些相关问题: 为什么python使用“魔术方法”? Python字符串没有字符串长度方法是有原因的吗? 我得到的答案基本上没有定论: 为什么Python使用方法来实现某些功能(例如list.index()),却使用其他方法(例如len(list))呢? 主要原因是历史。函数用于那些对一组类型通用的操作,即使对于根本没有方法的对象(例如元组),这些操作也可以使用。使用Python的功能特性(map(),apply()等)时,具有可以轻松应用于对象的不定形集合的函数也很方便。 实际上,将len(),max(),min()实现为内置函数实际上比将它们实现为每种类型的方法要少。人们可能会质疑个别情况,但这是Python的一部分,现在进行这样的基本更改为时已晚。必须保留功能以避免大量代码损坏。 尽管很有趣,但是上面并没有真正说明采用哪种策略。 这是原因之一-使用自定义方法,开发人员可以自由选择其他方法名称,例如getLength(),length(),getlength()或其他名称。Python强制执行严格的命名,以便可以使用通用函数len()。 稍微有趣一点。我认为函数在某种意义上是接口的Pythonic版本。 最后,来自Guido本人: 谈论能力/接口使我想到了一些“流氓”特殊方法名称。在《语言参考》中,它说:“类可以通过定义具有特殊名称的方法来实现某些由特殊语法调用的操作(例如算术运算或下标和切片)。” 但是,所有这些带有特殊名称的方法(例如__len__或)__unicode__似乎都是为内置函数的利益提供的,而不是为了支持语法。大概在基于接口的Python中,这些方法将在ABC上变成常规命名的方法,因此 __len__将成为 class container: ... def len(self): raise NotImplemented 虽然,再想一想,我不明白为什么所有的句法运算都不会仅仅在特定的ABC上调用适当的通常命名的方法。“ <”举例来说,大概会调用“ object.lessthan”(或者是“ comparable.lessthan“)。因此,另一个好处是能够使Python摆脱这种乱七八糟的名字,对我而言这似乎是HCI的改进。 嗯 我不确定我是否同意(图:-)。 我首先要解释“ Python基本原理”的两个方面。 首先,出于HCI的原因,我选择了len(x)而不是x.len()(def __len__()后来出现了)。实际上,两个HCI相互交织在一起: (a)对于某些运算,前缀表示法比后缀读得更好-前缀(和infix!)操作在数学中具有悠久的传统,喜欢在视觉上帮助数学家思考问题的表示法。比较与我们改写像公式简单x*(a+b)到x*a + x*b使用原始OO符号做同样的事情的笨拙。 (b)当我读到说的代码时,len(x)我知道那是在问某物的长度。这告诉我两件事:结果是整数,参数是某种容器。相反,当我阅读本文时x.len(),我必须已经知道这x是一种实现接口或从具有standard的类继承的容器len()。当未实现映射的类具有get()或keys() 方法,或者不是文件的某些具有方法时,我们有时会感到困惑write()。 用另一种方式说同样的事情,我将'len'视为内置 操作。我不想失去那个。我不能肯定地说出您是否是那样的意思,但是“ def len(self):...”当然听起来像您想将其降级为普通方法。我对此坚决为-1。 我答应解释的Python基本原理的第二点是为什么我选择了特殊的外观__special__而不是仅仅 选择外观的原因special。我期待类可能要覆盖的许多操作,一些标准(例如__add__或__getitem__),某些不是那么标准(例如,泡菜__reduce__很长一段时间都不支持C代码)。我不希望这些特殊操作使用普通的方法名称,因为那样的话,预先存在的类或用户没有为所有特殊方法存储百科全书的用户编写的类可能会意外地定义它们并非要实现的操作,可能会造成灾难性的后果。伊万·科斯蒂奇(IvanKrstić)在他的信息中对此进行了更为简洁的解释,在我将所有这些内容写完之后,这些信息才得以体现。 ---Guido van Rossum(主页:http ://www.python.org/~guido/ ) 我对此的理解是,在某些情况下,前缀表示法更有意义(即,从语言的角度来看,Duck.quack比quack(Duck)更有意义。)而且,该函数还允许使用“接口”。 …

8
在Ruby中将方法作为参数传递
我想和Ruby混在一起。因此,我尝试实现“编程集体智能” Ruby书中的算法(用Python提供)。 在第8章中,作者将方法a作为参数传递。这似乎在Python中有效,但在Ruby中无效。 我这里有方法 def gaussian(dist, sigma=10.0) foo end 并想用另一个方法来调用 def weightedknn(data, vec1, k = 5, weightf = gaussian) foo weight = weightf(dist) foo end 我只有一个错误 ArgumentError: wrong number of arguments (0 for 1)
117 ruby  parameters  methods 

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.