前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python property使用简介

Python property使用简介

作者头像
授客
发布2019-09-11 15:25:08
3530
发布2019-09-11 15:25:08
举报
文章被收录于专栏:授客的专栏授客的专栏

功能简介

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 = name self.sex = sex self.title = title @property def name(self): return self.name @property def sex(self): return self.sex @property def title(self): return self.title @title.setter def title(self, title): self.title = title if __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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 功能简介
  • 代码演示1
  • 代码演示2
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档