Python一些内置函数


1. 简介

  • isinstance
  • hasattr
  • getattr
  • setattr
  • super

2. isinstance 函数

来判断一个对象是否是一个已知的类型。

语法:isinstance(object, classinfo) -> bool

参数:

  • object:实例对象。
  • classinfo:可以是直接或间接类名、基本类型或者由它们组成的元组。

返回值:

  • True:object的类型与classinfo相同时。
  • False:不同时。

isinstance() 与 type() 区别:

  • type() 不会认为子类是一种父类类型,不考虑继承关系。
  • isinstance() 会认为子类是一种父类类型,考虑继承关系。

示例:

class A: pass
class B(A): pass
isinstance(A(), A)    # True
type(A()) == A        # True
isinstance(B(), A)    # True
type(B()) == A        # False

3. hasattr 函数

用于判断对象是否包含对应的属性。

语法:hasattr(object, name: str) -> bool

参数:

  • object:实例。
  • name:字符串,属性名。

返回值:

  • True:对象有该属性。
  • False:没有时。

示例:

class Coordinate:
    x = 10
point1 = Coordinate() 
hasattr(point1, 'x')    # True
hasattr(point1, 'y')    # False

4. getattr 函数

返回一个对象属性值。

语法:getattr(object, name[, default])

参数:

  • object:对象。
  • name:字符串,对象属性。
  • default:默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。

返回值:

  • 返回对象属性值。

示例:

class A:
    bar = 'bar的值'
a = A()
getattr(a, 'bar')                  # 'bar的值'
getattr(a, 'bar2', '没有该属性')    # '没有该属性'

5. setattr 函数

设置属性值,该属性不一定是存在的。

语法:setattr(object, name, value) -> None

参数:

  • object:对象。
  • name:字符串,对象属性。
  • value:属性值。

返回值:

  • 无。

示例:

class A:
    bar = 'bar的值'
a = A()
getattr(a, 'bar')                  # 'bar的值'
getattr(a, 'bar2', '没有该属性')    # '没有该属性'
setattr(a, 'bar2', 'bar2的值')
getattr(a, 'bar2', '没有该属性')    # 'bar2的值'

6. super 函数

调用父类(超类)的一个方法。

语法:super(type[, object-or-type])

参数:

  • type:子类自身类名称。
  • object-or-type:示例的指针,一般是 self

返回值:

  • 父类被调用方法返回值

示例 python3:

class F:
    def __init__(self):
        print('F')

class A(F):
    def __init__(self):
        print('A')

class B(A):
    def __init__(self):
        super().__init__()

b = B() # 'A'

示例 python2:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
class F(object):            # Python2.x 需要继承 object
    def __init__(self):
        print('F')

class A(F):
    def __init__(self):
        print('A')

class B(A):
    def __init__(self):
        super(B, self).__init__()

b = B() # 'A'
发布了31 篇原创文章 · 获赞 11 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/MrRight17/article/details/104658494