专栏首页授客的专栏Python property使用简介

Python property使用简介

功能简介

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 基于Python实现邮件发送

    注:需要修改mimetypes.py文件(该文件可通过文章底部的网盘分享连接获取),否则会报错,类似如下

    授客
  • Python __exit__,__enter__函数with语句的组合应用

    设计对象类时,我们可以为对象类新增两个方法,一个是__enter(self)__,一个是__exit__(self, exc_type, exc_val, e...

    授客
  • Python @classmethod和@staticmethod装饰器使用介绍

    静态方法:类中用 @staticmethod装饰的不带 self 参数的方法。类的静态方法可以直接使用类名调用。

    授客
  • Python与Cisco 的事儿

       前几天写了一段代码,是用来检查思科设备的端口运行状态的,只是中间有些bug或是存在安全问题,比如密码写在脚本里,对网络不可以达的设备没有进行判断并加以跳过...

    用户2398817
  • 看了《最强大脑》,我决定做这个游戏

    今年年初,新一季的《最强大脑》开播了,第一集选拔的时候大家做了一个数字游戏,名叫《数字华容道》,当时何猷君以二十几秒的成绩夺得该项目的冠军,来看一下当时的比赛:

    王强
  • python pyqt5 QMessageBox 消息框

    import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.Qt...

    用户5760343
  • python pyqt5 QStatusBar 常用

    import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.Qt...

    用户5760343
  • python模块:win32com用法详解

    import win32com from win32com.client import Dispatch, constants

    菲宇
  • 如何用vn.py做隔夜交易?

    本文提供了一个每个交易日开盘前不用重连CTP的方法。如果不是特殊需求,强烈建议每天盘前重启程序。感谢viponedream在维恩的派论坛里的分享!

    用Python的交易员
  • 用Python实现模拟登录正方教务系统抢课

    最近学校开始选课,但是如果选课时间与自己的事情冲突,这时候就可以使用Python脚本自助抢课,抢课的第一步即是模拟登录,需要模拟登录后保存登录信息然后再进行操作...

    sergiojune

扫码关注云+社区

领取腾讯云代金券