Python3.7之内置方法

一、反射

1.hasattr()函数

hasattr()函数用于判断对象是否包含对应的属性。

语法:hasattr(object, name)

参数:object -- 对象。name -- 字符串,属性名。

返回值:如果对象有该属性返回 True,否则返回 False。

class Example:
    a = 1
    b = 2
    c = 3


print(hasattr(Example, 'a'))
print(hasattr(Example, 'b'))
print(hasattr(Example, 'd'))

'''
True
True
False
'''

2.getattr()函数

getattr() 函数用于返回一个对象属性值。

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

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

性时,将触发 AttributeError。

返回值:返回对象属性值。

print(getattr(Example, 'a'))  # 获取属性a的值
print(getattr(Example, 'd', None))
print(getattr(Example, 'd'))
'''
1
None
Traceback (most recent call last):
 ……
AttributeError: type object 'Example' has no attribute 'd'
'''

获取对象属性后返回值可直接使用:

class A:
    def set(self, a, b):
        x = a
        a = b
        b = x
        print(a, b)


A1 = A()
c = getattr(A1, 'set')
c(1, 2)
'''
2 1
'''

3.setattr()函数

setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的。

语法:setattr(object, name, value)

参数:object -- 对象。name -- 字符串,对象属性。value -- 属性值。

返回值:无。

对已存在的属性进行赋值

class Example:
    a = 1
    b = 2
    c = 3


print(getattr(Example, 'c'))
setattr(Example, 'c', 4)
print(Example.c)

如果属性不存在会创建一个新的对象属性,并对属性赋值:

print(getattr(Example, 'd', None))
setattr(Example, 'd', 10)
print(Example.d)

'''
None
10
'''

4.delattr()函数

描述:delattr 函数用于删除属性。delattr(x, 'foobar') 相等于 del x.foobar。

语法:delattr(object, name)

参数:object -- 对象。name -- 必须是对象的属性。

返回值:无。

class Coordinate:
    x = 10
    y = -5
    z = 0


point1 = Coordinate()

print('x = ', point1.x)
print('y = ', point1.y)
print('z = ', point1.z)

delattr(Coordinate, 'z')

print('--删除 z 属性后--')
print('x = ', point1.x)
print('y = ', point1.y)

# 触发错误
print('z = ', point1.z)
'''
x =  10
y =  -5
z =  0
--删除 z 属性后--
x =  10
y =  -5
'''

二、isinstance()函数

isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。

语法:isinstance(object, classinfo)

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

对于基本类型来说 classinfo 可以是:int,float,bool,complex,str(字符串),list,dict(字典),set,tuple

返回值:如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False。

a = 2
print(isinstance(a, int))
print(isinstance(a, str))
print(isinstance(a, (str, int, list)))  # 是元组中的一个返回True

'''
True
False
True
'''

type()与isinstance()的区别

class A:
    pass


class B(A):
    pass


print(isinstance(B(), A))
print(type(B()) == A)

'''
True
False
'''

三、issubclass()函数

描述:issubclass() 方法用于判断参数 class 是否是类型参数 classinfo 的子类。

语法:issubclass(class, classinfo)

参数:class -- 类。classinfo -- 类。

返回值:如果 class 是 classinfo 的子类返回 True,否则返回 False。

print(issubclass(B, A))

'''
True
'''

猜你喜欢

转载自www.cnblogs.com/rainbow-ran/p/12205080.html