xiaoa~
2018-02-20 01:18
采纳率: 100%
浏览 1.2k

python的方法存贮在类中还是对象中?

图片说明

图片说明
请问各位大侠,类中的方法在内存中的存储是在类中还是对象中?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • Boover 2018-02-28 06:22
    已采纳
     In [263]: class Sample(object):
         ...:     def ordinary(self):
         ...:         print "I'm a ordinary method"
         ...:     @classmethod
         ...:     def clsmethod(cls):
         ...:         print "I'm a class method"
         ...:     @staticmethod
         ...:     def stcmethod():
         ...:         print "I'm a static method"
         ...:         
    
    In [264]: a = Sample()
    
    In [265]: b = Sample()
    
    In [266]: a.ordinary == Sample.ordinary # 普通方法,各自存储
    Out[266]: False
    
    In [267]: a.ordinary == b.ordinary
    Out[267]: False
    
    In [268]: a.clsmethod == Sample.clsmethod # 类方法存储在类中
    Out[268]: True
    
    In [269]: a.stcmethod == Sample.stcmethod # 静态方法存储在类中
    Out[269]: True
    
    In [270]: a.ordinary.im\_func == Sample.ordinary.im\_func
    Out[270]: True
    
    点赞 打赏 评论
  • blownewbee 2018-02-20 01:49

    其实既不是存储在类中也不是存储在对象中。应该说在类的元数据(描述一个类的信息,或者叫metadata)中,存储了方法的指针。当然这个是对于python解释器内部来说的。
    而类的静态成员和对象的实例成员,则是单独存储的。

    点赞 打赏 评论
  • tinysxing 2018-02-20 05:56

    这个要区分classmethod staticmethod和普通方法的。

    点赞 打赏 评论
  • aryan_a 2018-02-20 12:57

    方法不是存储在类或者对象中,它在内存中归属于类。

    点赞 打赏 评论
  • qq_38676542 2018-02-21 06:13

    在系统内设定的类里面

    点赞 打赏 评论

相关推荐 更多相似问题