java - 为什么 java/javascript/python 强制在方法名称后使用 (),即使它不带参数?

标签 java javascript python methods properties

我最常见的错误之一是我永远记不住某个东西是方法还是属性,所以我不断地添加或删除括号。

所以我想知道在显式调用对象的属性和方法之间是否存在良好的逻辑。

显然,它允许您拥有共享相同名称的属性和方法,但我认为这种情况并不常见。

我能想到的唯一大好处就是可读性。有时您在查看代码时可能想知道某个东西是方法还是属性,但我很难想出具体的示例,而这确实有帮助。但是我是n00b,所以我可能还没有遇到过这种情况。我会很感激这种情况的例子。

此外,还有其他语言的区别不明显吗?

无论如何,如果你能回答,这将帮助我减少每次犯这个错误时的烦恼^-^。

更新: 感谢大家到目前为止的精彩回答!我只有大约一周的 js 和 1 天的 python,所以我不知道你可以在不调用函数的情况下引用它们。棒极了。我对 java 有更多的经验,所以这就是我主要来自的地方......任何人都可以提出一个同样令人信服的论据来证明在 java 中你不能引用函数的情况吗?除了它是一种非常明确的语言之外,还具有带来的所有好处:)。

最佳答案

所有现代语言都需要这样做,因为引用一个函数和调用一个函数是不同的操作。

例如,

def func():
    print "hello"
    return 10
a = func
a()

很明显,a = funca = func() 具有非常不同的含义。

相比之下,Ruby——您最有可能想到的语言——不需要括号;它可以这样做是因为它不支持引用函数。

关于java - 为什么 java/javascript/python 强制在方法名称后使用 (),即使它不带参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3744180/

相关文章:

javascript - 如何在对象创建时运行函数?

javascript - 如何从谷歌路线结果中获取可拖动航路点的位置

python - 快速访问具有任意维数的 Numpy 数组中的第一个元素的方法?

python - import cntk 在 VS2017 "python environment"中有效,但在 "python project"中无效

java - SwipeRefreshLayout + AsyncTask : Fail to refresh data

java - 在 JScrollPane 中调用 setViewportView 后避免自动滚动到底部

javascript - 如何使用 node.js 获取推文

java - 如何使用 JPQL 获取 SELECT 操作的第一行?

Java/PostgreSQL-CallableStatement.setBoolean null 抛出 NPE

python Holoviews 带有列的布局选项卡