Python内置函数-5 format, hasattr,getattr,setattr, delattr

①format  字符串格式化功能一个是常用的%, 还有一个是format

'''format 字符串格式化功能'''
#
ret1 = "今天是{0}, {0}, {0}".format("国庆节")
# 今天是国庆节, 国庆节, 国庆节

ret2 = "你好, 我是{},我今年{}, 我的名字叫{}".format("小小", "26岁", "小小")
# 你好, 我是小小,我今年26岁, 我的名字叫小小

ret3 = "你好, 我是{0},我今年{1}, 我的名字叫{0}".format("小小", "26岁")
# 你好, 我是小小,我今年26岁, 我的名字叫小小

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

class A(object):
    a = 10
    b = 20
    c = 30
    def make_cool(self):
        pass
print(hasattr(A, 'a'))        # True
print(hasattr(A, 'b'))        # True
print(hasattr(A, 'c'))        # True
print(hasattr(A, 'd'))        # False
print(hasattr(A, "make_cool"))# True

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


class A(object):
    name = "小小"


a = A()
ret1 = getattr(a, 'name')
print(ret1)        # 小小


ret2 = getattr(a, 'age')
print(ret2)        # AttributeError: 'A' object has no attribute 'age'
    

ret3 = getattr(a, 'age', 13)   # 第三个参数'13'是一个默认值, 
                               # 当a 没有age属性的时候会使用, 有age属性则不使用默认值,例如ret4
                               # 但是不会对a对象造成影响, 只是为了获取ret3的时候不报错 
print(ret3)        # 13

ret4 = getttr(a, 'name', '大大')
print(ret4)        # "小小"


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

class test_setattr():
    name = "小小"


demo1 = test_setattr()


ret_get_name_1 = getattr(demo1, 'name')       # 小小
# ret_get_age_1 = getattr(demo1, 'age')         # test_setattr' object has no attribute 'age'


setattr(demo1, 'name', "大大")
setattr(demo1, 'age', 15)

ret_get_name_2 = getattr(demo1, 'name')       # 大大
ret_get_age_2 = getattr(demo1, 'age')         # 15
print(ret_get_age_2)
print(ret_get_name_2)

⑤delattr函数用于删除属性。

class test_delattr():
    a = 1
    b = 2
    c = 3


demo_3 = test_delattr()

print(demo_3.a)     # 1
print(demo_3.b)     # 2
print(demo_3.c)     # 3

# 删除 a属性
delattr(test_delattr, 'a')

print(demo_3.b)     # 2
print(demo_3.c)     # 3
print(demo_3.a)     # 'test_delattr' object has no attribute 'a'

猜你喜欢

转载自blog.csdn.net/qq_42327755/article/details/86599423
今日推荐