Python - 函数属性方法装饰器

Posted 幼时清华梦丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python - 函数属性方法装饰器相关的知识,希望对你有一定的参考价值。

1.给类绑定属性值

    类名.属性名 = 属性值

class Stu(object):
    # 构造方法
    def __init__(self):
        print(\'我是一个学生\')


# 给类添加属性
s = Stu()
s.name = \'Tom\'
print(s.name)

    注:仅供当前对象使用

 

2.类、对象的属性操作

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

    setattr(object, name, value)

        -object: 对象

        -name:对象属性,字符串

        -value:属性值


 

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

    hasattr(object, name)

        -object: 对象

        -name:属性名,字符串


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

    getattr(object, name, value)

 

        -object: 对象

 

        -name:对象属性,字符串

 

        -value:属性值,默认为空

    注:当name不存在且存在默认值时getattr() 函数返回默认值


 

 

 

class Stu(object):
    # 构造方法
    def __init__(self):
        print(\'我是一个学生\')


# 给类设置属性
setattr(Stu, \'name\', \'Tom\')
# 实例化对象
s = Stu()
s1 = Stu()
print(s.name)
print(s1.name)
# 判断Stu()是否有‘name’属性
print(hasattr(Stu, \'name\'))
# 获取属性值,属性不存在时报错
print(getattr(Stu, \'name\'))
# 属性不存在但设置了默认值时返回默认值
print(getattr(Stu, \'ame\', \'Jary\'))

 

 3.给对象和类绑定方法

from types import MethodType


class Stu(object):
    # 构造方法
    def __init__(self):
        print(\'我是一个学生\')


# 类外部定义一个方法
def set_age(self, age):
    self.age = age


# 给对象或类绑定方法
s = Stu()
s.set_age = MethodType(set_age, s)
s.set_age(18)
print(s.age)
# 新建对象使用此方法报错
# s2 = Stu()
# s.set_age(18)
# print(s2.age)

    注:仅供当前对象使用此方法 新建对象使用此方法会报错(类没有此方法)

 

 

    新建对象使用此方法:

 

 

 

 

 

 

 

 

 

以上是关于Python - 函数属性方法装饰器的主要内容,如果未能解决你的问题,请参考以下文章

Python面向对象 | 类属性

由浅入深,走进Python装饰器-----第一篇:基础

Python使用@property装饰器--getter和setter方法变成属性

Python连载19-装饰器

二十三Python 中 property() 函数及 @property 装饰器的使用

Python装饰器理解