我的理解正确吗:实例的方法放在类对象里,每当实例要调用实例方法时,就去类对象的内存里调用。
我的理解正确吗:实例的方法放在类对象里,每当实例要调用实例方法时,就去类对象的内存里调用。
|
neoblackcapMar 23, 2016
1
看情况,实践证明, Python 的实例方法不是,都是一个。
|
|
2
@neoblackcap 我意思也是一个,你是怎么证明都是一个的
|
|
zwl2012Mar 23, 2016 via iPhone
3
通过指针?
|
|
domtyMar 23, 2016
4
Java 好像是有专门的一个地方叫方法区去存这些方法的。
还有类和对象应该是两个概念吧。类对象是指什么。 还有一点你说的东西应该是涉及到程序语言的内存模型,不同的程序语言应该会有不同。比如 JavaScript 中函数本身也是一个对象。 |
|
billleeMar 23, 2016
5
C++ 里方法放在代码段,每当要调用非虚函数时时,编译器把代码段里的地址填到调用处;调用虚函数时,先查虚函数表,虚函数表里是对应的实现函数在代码段里的地址(即函数指针)。
@domty 有些动态语言,类也是类似对象的,比如 python 的类就可以赋值给变量,然后那个变量就可以当类用了 |
|
alexapolloMar 23, 2016
6
大部分语言实现是不会复制的
|
|
neoblackcapMar 23, 2016
7
@UtopiaCHN
``` # coding=utf-8 if __name__ == '__main__': class Animal(object): def bark(self): pass dog = Animal() wolf = Animal() if id(dog.bark) == id(wolf.bark): print('Different method of instance from same class are same') else: print('Different method of instance from same class are different') ``` |
|
gamexgMar 24, 2016
8
即使很特殊的情况也只是复制一个函数指针,没有碰到会复制代码的情况。
|