python装饰器setter实现原理_python中的装饰器

本文详细介绍了Python中的装饰器、静态方法、类方法和实例方法。@property装饰器用于将方法转换为属性调用,同时展示了如何创建只读和可读写属性。静态方法不访问类变量和成员变量,而类方法可以访问类变量但不能访问成员变量。实例方法则可以通过实例调用来访问类变量和成员变量。此外,通过代码示例展示了这些概念在实际编程中的应用。
摘要由CSDN通过智能技术生成

python中的装饰器

1. @property ['prɑpɚti]

@property装饰器就是负责把一个方法变成属性调用。

class Student(object):

@property

def birth(self):

return self._birth

@birth.setter

def birth(self, value):

self._birth = value

@property

def age(self):

return 2014 - self._birth

上面的birth是可读写属性(。@property本身又创建了另一个装饰器@birth.setter,负责把一个setter方法变成属性赋值),而age就是一个只读属性(只定义getter方法,不定义setter方法就是一个只读属性)

2. 静态方法(@staticmethod)

不能访问类变量和成员变量以及不能调用累函数和成员函数

类内:可以通过self或者cls来调用静态方法

类外,可以通过类名或实例化来调用静态方法

3. 类方法

可以访问类变量,不能访问成员变量

类内: 成员函数之间调用时,可以通过 self. 或 类名 调用

类外: 可以通过类名 或者 类的实例对象

4. 实例方法

通过实例调用,可以访问类变量和成员变量

类定义内: 成员函数之间调用时,可以通过 self. 或者 类名.函数名(对象指针--self),即需要把self 指针传进去

类外: 可以通过实例.函数名访问

# -*- coding:utf-8 -*-

"""

File Name : 'te'.py

Description:

Author: 'chengwei'

Date: '2016/6/2' '15:36'

"""

class Foo(object):

inst_no = 0 # 类变量

def __init__(self):

self.a = 1 # 成员变量

@classmethod

def class_foo(cls, x): #该方法可以通过类名直接调用,或者类实例调用

print "executing class_foo(%s,%s)" % (cls, x)

print cls.static_foo # 类内调静态方法

@staticmethod

def static_foo(x):

print "executing static_foo(%s)" % x

def test(self):

self.static_foo('a')

if __name__ == "__main__":

Foo.static_foo('a') # 类外调静态方法

Foo.class_foo('b') # 类外调类方法

t = Foo() # 实例化

print t.inst_no

print t.a

t.static_foo('a')

t.class_foo('b')

t.test()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值