• python学习对象相关的bif


    >>> class A:
        pass
    
    >>> class B(A):
        pass
    
    >>> issubclass(B, A)    #A是否是B的子类
    True
    >>> issubclass(B, B)
    True
    >>> issubclass(B, object)
    True
    >>> class C:
        pass
    
    >>> issubclass(B, C)
    False
    
    >>> b1 = B()
    >>> isinstance(b1, B)    #123
    True
    >>> isinstance(b1, A)
    True
    >>> isinstance(b1,C)
    False
    >>> isinstance(b1,(B,A,C))
    True

      issubclass(class, classinfo)

    1.一个类被认为是自身的子类

    2.classinfo可以是类对象组成的元组,只要class是其中一个候选类的子类,则返回True

      isinstance(object, classinfo)

    1.如果第一个参数不是对象,则永远返回False

    2.如果第二个参数不是类或者由类对象组成的元组,会有TypeError异常

      hasattr(object, name)

    1.检查object对象是否含有该‘’name‘’属性

    >>> class C:
        def __init__(self, x=0):
            self.x = x
    
            
    >>> c1 = C()
    >>> hasattr(c1,'x')
    True

      getattr(object, name[, fault])

    1.返回对象指定的属性值,如果不存在则会返回fault指定的错误

    >>> getattr(c1, 'x')
    0
    >>> getattr(c1, 'y')
    Traceback (most recent call last):
      File "<pyshell#25>", line 1, in <module>
        getattr(c1, 'y')
    AttributeError: 'C' object has no attribute 'y'
    >>> getattr(c1,'y',"您访问的属性不存在...")
    '您访问的属性不存在...'

      setattr(object, name, value)

    1.访问是否有该属性,若没有,则添加这个属性及其值

      delattr(object, name)

    1.删除指定的属性

    property(fget=None, fset=None, fdel=None, doc=None)

    1.通过属性设置属性

    >>> class C:
        def __init__(self, size=10):
            self.size = size
        def getSize(self):
            return self.size
        def setSize(self, value):
            self.size = value
        def delSize(self):
            del self.size
        x = property(getSize,setSize,delSize)
    
        
    >>> c1 = C()
    >>> c1.getSize()
    10
    >>> c1.x
    10
    >>> c1.x = 18
    >>> c1.x
    18
    >>> del c1.x

    2.相当于重新封装3个属性

  • 相关阅读:
    [loj6271]生成树求和
    [cf1209E]Rotate Columns
    [cf1491H]Yuezheng Ling and Dynamic Tree
    [atARC064F]Rotated Palindromes
    [cf1491G]Switch and Flip
    [cf1491F]Magnets
    [atARC063F]Snuke's Coloring 2
    [atARC062F]Painting Graphs with AtCoDeer
    [atARC061F]Card Game for Three
    [atARC112E]Rvom and Rsrev
  • 原文地址:https://www.cnblogs.com/jdzhang1995/p/10446990.html
Copyright © 2020-2023  润新知