python property作用_Python property使用简介

property使用简介

by:授客 QQ:1033553122

功能简介

1)把类方法变成只读属性

2)setter和getter的另一种实现

代码演示1

#!/usr/bin/env python

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

__author__ = 'shouke'

class User(object):

def __init__(self, username, password):

self._username =  username

self._password = password

@property

def username(self):

return self._username

@username.setter

def username(self, username):

self._username = username

@property

def password(self):

return self._password

@password.setter

def password(self, password):

self._password = password

if __name__ == '__main__':

boy = User('shouke', 'shouke2014')

print('对象用户名:', boy.username)

boy.username = 'shou ke'

print('修改后的用户名:', boy.username)

print('通过修改属性值来修改密码')

boy._password = 2014

print('修改后的用户密码:', boy._password)

boy.password = 'shouke2016'

print('通过方法属性来修改密码,修改后的用户密码:', boy._password)

运行结果:

对象用户名: shouke

修改后的用户名: shou ke

通过修改属性值来修改密码

修改后的用户密码: 2014

通过方法属性来修改密码,修改后的用户密码: shouke2016

注意:

1、@property和@function.setter需要成对使用,如下

@property

def function_name

@function.setter

def function_name(self, attribute)

2、如果变量属性值和方法属性值相同,那么以下情况下是无法完成初始化函数 __init__ 中的赋值操作的,即无法初始化对象

代码演示2

#!/usr/bin/env python#

-*- coding:utf-8 -*-__author__

= 'shouke'class

Tester(object):def

__init__(self,

name, sex, title):self.name

= nameself.sex

= sexself.title

= title@propertydef

name(self):return

self.name@propertydef

sex(self):returnself.sex@propertydef

title(self):return

self.title@title.setterdef

title(self,

title):self.title

= titleif

__name__ == '__main__':tester

= Tester('shouke',

'M',

'Tester')print(tester.title)

"D:\Program

Files\python33\python.exe" E:/Projects/untitled/py1.py

Traceback (most recent call last):

File

"E:/Projects/untitled/py1.py", line 30, in

tester

= Tester('shouke', 'M', 'Tester')

File

"E:/Projects/untitled/py1.py", line 8, in __init__

self.name

= name

AttributeError: can't set attribute

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值