'Self' of python vs 'this' of cpp/c#
我对python的oop概念非常熟悉,所以我想知道python的
python是一种动态语言。这样您就可以向类中添加成员。使用
与C++一样,可以显式传递实例。在下面的代码中,
1 2 3 4 5 6 7 | class Foo : def call(self) : pass foo = Foo() foo.call() #1 Foo.call(foo) #2 |
来自PEP20:
注意,
是的,它们实现了相同的概念。它们的目的是为类的实例提供一个句柄,在该实例上执行方法。或者,在其他措词中,是调用方法的实例。
也许有人会更聪明地指出真正的差异,但是对于一个非常正常的用户来说,Python EDCOX1(0)基本上等同于C++ EDCOX1(1)。
然而,在python中对self的引用更为明确。例如,它显式地出现在方法声明中。对被调用对象的实例执行的方法调用必须使用
即:
1 2 3 4 5 6 | def do_more_fun(self): #haha pass def method1(self, other_arg): self.do_more_fun() |
这在C++中看起来更像:
1 2 3 4 5 6 7 8 | void do_more_fun(){ //haha }; void method1(other_arg){ do_more_fun(); // this->do_more_fun(); // also can be called explicitly through `this` } |
正如Juanchopanza指出的那样,