《Dive into Python》 对象和面向对象

#Python

另开一文继续写Dive into Python的笔记。

  • 使用 from module import导入模块:

    import module的差别在于,module被直接导入到局部名字空间内了,所以它可以直接被使用,而不需要加上模块名的限定。

  • 类的定义

      class FileInfo (UserDict):
          "store file metadata"
          def __init__(self,filename = None):
              UserDict.__init__(self)
              self["name"] = filename
    
    • 类名一般首字母大写
    • 从基类继承,只需要在括号中写上基类名
    • init有点像C++的构造函数
    • 必须显示调用父类的init方法
  • 类的实例化

      import fileinfo
      f = fileinfo.FileInfo ("/music/_singles/kairo.mp3")
    
    • 实例化一个类只需要像函数一样调用类即可
    • 内存泄漏在Python中很少见,因为Python有个引用计数的垃圾收集方式
  • 探索 UserDict

      class UserDict():
          def __init__(self, dict = None):
              self.data = {}
              if dict is not None :self.update(dict)
    
    • update是个字典和合并函数
      def clear(self): self.data.clear()
      def copy(self):
          if self.__class__ is UserDict:
              return UserDict(self.data)
    
    • 我们这的copy函数应该也应该返回一个类的实例
  • 私有函数

    在Python中,如果一个函数,类方法或者属性以两个下划线开始(但不以其结束),它就是私有的,你不能在类外面调用它们