经过一些实验后,我在 Python 中发现了一些奇怪的东西(对于专家来说可能很明显,在这种情况下请原谅我)。也就是说,与 C++ 不同,可以使用两种不同的语法调用 python 类方法。我将给出两个最小的工作示例,其中包含一个简单的类,它只包含一个整数属性,并且可以向它添加另一个整数。首先是 C++。
#include <iostream>
using namespace std;
class MyClass
{
int value;
public:
MyClass(int arg){value=arg;}
int add(int arg){return arg+value;}
};
int main()
{
MyClass anObject(4);
cout<<"The addition gives "<<anObject.add(6)<<endl;//Outputs 10
//cout<<"The alternative way to call the method gives "<<MyClass.add(anObject, 6)<<endl; //Does not work
//cout<<"Another alternative way to call the method gives "<<MyClass::add(anObject, 6)<<endl; //Does not work either
return EXIT_SUCCESS;
}
和蟒蛇。
class MyClass(object):
def __init__(self, arg=3):self.value=arg
def add(self, arg):return arg+self.value
anObject=MyClass(4)
print(anObject.add(6)) #The C++ way, Outputs 10
print(MyClass.add(anObject, 6)) #Outputs 10
显然,这不是我要解决的问题,但这个问题的目的是看到一个关于为什么选项 2 是 python 的一个特性而它不是 C++ 的一个特性的讨论?它是源于语言的一些更深层次的设计理念,还是与语言的编译与解释性质有关?相关,为什么self
在 python 中显示为虚拟参数,但在 C++ 中没有?