Python面向对象编程-03(最后一节)

本知识点参考廖雪峰的Python课程 [https://www.liaoxuefeng.com]

感谢北京图灵知非的免费课程 [http://www.tulingxueyuan.com/]

参考菜鸟教程[http://www.runoob.com/]

类的相关函数

获取对象的信息

  • issubclass:检测一个类是否是另一个类的子类
    • 语法:issubclass(class, classinfo)
    • class:类
    • classinfo:类
    • 返回值为布尔类型:True,False

      class A():
          pass
      class B(A):
          pass
      print(issubclass(B,A))
      
      print(issubclass(B,A))
      # 返回值为True
      >>> True
  • isinstance:检测一个对象是否是一个类的实例
    • 语法:isinstance(object, classinfo)
    • object -- 实例对象
    • classinfo --一个类
    • 返回值为布尔类型:True,False

      a = A()
      isinstance(a,A)
      
      >>> True
      >
  • hasattr:检测一个对象是否由成员xxx
    • 语法:hasattr(object)
    • object -- 对象
    • name -- 字符串,属性名
    • 返回值为布尔类型:True,False

      class Yang(Student):
          def __init__(self,name,score):
              self.name=name
              self.score=score
      
      yang = Yang('yangaoteng',100)
      hasattr(yang,'name')
      
      >>>True
  • getattr:函数用于返回一个对象属性值
    • getattr语法:getattr(object,name[,default])
    • object -- 对象
    • name -- 字符串,对象属性
    • default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError
    • 返回对象的属性值

      getattr(yang,'name')  # 获取属性 name值
      >>> 'yangaoteng'
      getattr(yang,'age')   #属性‘age’不存在,报错
      AttributeError: 'Yang' object has no attribute 'age'
      getattr(yang,'age',18)  # 属性'age' 不存在,返回来默认值
      >>> 18
  • setattr: 函数对应 函数getattr(),用于设定属性值
    • setattr(object,name,value)
    • object -- 对象
    • name -- 字符串,对象属性
    • value -- 属性值
    • 返回值:None

      setattr(yang,'score',101)
      getattr(yang,'score')
      >>> 101
  • delattr: 函数用于删除属性(delattr(x,'foobar') 相等于 del x.foobar)
  • 语法 delattr(object,name)
  • object:对象
  • name:属性值
  • 返回值:None

        delattr(yang,'score')
        getattr(yang,'score',66)
        >>> 66
  • dir: 获取对象的成员列表

property和@property

  • property()用法
  • 语法:class property([fget[, fset[, fdel[, doc]]]])
    • fget -- 获取属性值的函数
    • fset -- 设置属性值的函数
    • fdel -- 删除属性值函数
    • doc -- 属性描述信息

      class property_test():
          def __init__(self,size=10):
              self.size = size
          def __getsize__(self):
              return self.size
          def __setsize__(self,value):
              self.size = value
          def __deletesize__(self):
              del self.size
          x = propert(__getsize__,__setsize__,__deletesize__,'我是说明文档')
  • 如果p是 property_test的实例化,p.x将触发__getsize__,p.x =value 会触发__setter__,del p.x 触发__deletesize__.
  • @property用法

        class property_test():
            def __init__(self,size=10):
                self.sizevalue = size
            @property
            def size (self):
                return self.sizevalue
            @size.setter
            def size (self,value):
                self.sizevlaue = value
            @size.deleter
            def size (self):
                del self.sizevalue

    类的内置属性

  • __ dict __:以字典的方式显示类的成员组成
  • __ doc __: 获取类的文档信息
  • __ name __:获取类的名称,如果在模块中使用,获取模块的名称
  • __ bases __: 获取某个类的所有父类,以元组的方式显示

类的常用魔术方法

猜你喜欢

转载自www.cnblogs.com/yangaoteng666/p/9233036.html