我的理解正确吗:实例的方法放在类对象里,每当实例要调用实例方法时,就去类对象的内存里调用。
我的理解正确吗:实例的方法放在类对象里,每当实例要调用实例方法时,就去类对象的内存里调用。
1
neoblackcap Mar 23, 2016
看情况,实践证明, Python 的实例方法不是,都是一个。
|
2
UtopiaCHN OP @neoblackcap 我意思也是一个,你是怎么证明都是一个的
|
3
zwl2012 Mar 23, 2016 via iPhone
通过指针?
|
4
domty Mar 23, 2016
Java 好像是有专门的一个地方叫方法区去存这些方法的。
还有类和对象应该是两个概念吧。类对象是指什么。 还有一点你说的东西应该是涉及到程序语言的内存模型,不同的程序语言应该会有不同。比如 JavaScript 中函数本身也是一个对象。 |
5
billlee Mar 23, 2016
C++ 里方法放在代码段,每当要调用非虚函数时时,编译器把代码段里的地址填到调用处;调用虚函数时,先查虚函数表,虚函数表里是对应的实现函数在代码段里的地址(即函数指针)。
@domty 有些动态语言,类也是类似对象的,比如 python 的类就可以赋值给变量,然后那个变量就可以当类用了 |
6
alexapollo Mar 23, 2016
大部分语言实现是不会复制的
|
7
neoblackcap Mar 23, 2016
@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') ``` |
8
gamexg Mar 24, 2016
即使很特殊的情况也只是复制一个函数指针,没有碰到会复制代码的情况。
|