面向对象编程之属性方法

八股文如下:

property属性介绍

property属性就是负责把一个方法当做属性进行使用,这样做可以简化代码使用。当修改值或者设置值的时候只需要像属性那样使用。

定义property属性有两种方式

  1. 装饰器方式
  2. 类属性方式

1. 使用装饰器方式

class Person(object):def __init__(self):self.__age = 0# 装饰器方式的property, 把age方法当做属性使用, 表示当获取属性时会执行下面修饰的方法@propertydef age(self):return self.__age# 把age方法当做属性使用, 表示当设置属性时会执行下面修饰的方法@age.setterdef age(self, new_age):if new_age >= 150:print("输入错误")else:self.__age = new_age# 创建person
p = Person()
print(p.age)
p.age = 100
print(p.age)
p.age = 1000

运行结果:

0
100
输入错误

快捷设置:在pycharm解释器中可以使用快捷方式props直接生成并同步修改。

2. 使用类属性方式

下面的方法应该更符合我们的设置习惯,在常规的定义函数方法后再增加一行property的设置即可:

class Person(object):def __init__(self):self.__age = 0def get_age(self):"""当获取age属性的时候会执行该方法"""return self.__agedef set_age(self, new_age):"""当设置age属性的时候会执行该方法"""if new_age >= 150:print("输入错误")else:self.__age = new_age# 类属性方式的property属性age = property(get_age, set_age)# 创建person
p = Person()
print(p.age)
p.age = 100
print(p.age)
p.age = 1000

运行结果:

0
100
输入错误

property的参数说明:

  • 第一个参数是获取属性时要执行的方法
  • 第二个参数是设置属性时要执行的方法

简单点来说总结为一下几点!!!

属性方法:
    1、把一个方法变成一个静态的属性(变量)
    2、能够正常的访问类中的所有东西----例:类变量,实例变量等

问题1:属性方法有啥用?
答:纯正的变量不能够执行一些动作,而属性方法可以执行一些动作。--说白了只是调用方式上面是变量的方式

问题2:既然属性方法可以变成变量,那么可以直接修改值吗?
答:不能够直接修改值,只有设置方法后才能够进行修改

问题3:既然属性方法可以变成变量,那么可以直接删除吗?
答:不能够直接修改值,只有设置方法后才能够进行删除

'''
属性方法:1、把一个方法变成一个静态的属性(变量)2、能够正常的访问类中的所有东西----例:类变量,实例变量等问题1:属性方法有啥用?
答:纯正的变量不能够执行一些动作,而属性方法可以执行一些动作。--说白了只是调用方式上面是变量的方式问题2:既然属性方法可以变成变量,那么可以直接修改值吗?
答:不能够直接修改值,只有设置方法后才能够进行修改问题2:既然属性方法可以变成变量,那么可以直接删除吗?
答:不能够直接修改值,只有设置方法后才能够进行删除
'''
class Fligth:def __init__(self,name):self.name=namedef checking_status(self):print('飞机正在检查状态当中!!!')print('飞机的状态为:%s'%self.name)return self.name@propertydef flight_status(self):status=self.checking_status()if status==0:print('飞机正在停止起飞!!')elif status==1:print('飞机正在准备起飞')elif status==2:print('飞机正在候机场!!!')@flight_status.setterdef flight_status(self,status):print('修改飞机的状态值status!')self.status=status@flight_status.deleterdef flight_status(self):print('正在删除当中')f1=Fligth(1)
#f1.checking_status()
f1.flight_status
f1.flight_status=0
print(f1.status)
f1.flight_status
del f1.flight_status
f1.flight_status

面向对象编程之属性方法property相关推荐

  1. python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别

    1.#类方法@classmethod,只能访问类变量,不能访问实例变量,通过cls参数传递当前类对象,不需要实例化,直接[类名.方法名()],可通过类对象和类对象实例访问 类方法:第一个参数强制为类对 ...

  2. python静态方法,类方法,属性方法,实例方法

    DAY 3. 静态方法,类方法,属性方法,实例方法 有四种方法,实例方法,类方法,静态方法,属性方法 实例方法 实例方法的第一个参数是self,他会指向类的实例化对象,只能被对象调用,如 class ...

  3. Python基础-面向对象编程之特性(property)

    Python基础-面向对象编程之特性property Python面向对象编程之特性(property) 一.统一访问原则 二.使用特性进行拦截操作 三.老式写法 Python面向对象编程之特性(pr ...

  4. python面向对象编程之实例属性和类属性

    廖雪峰python教程 面向对象编程之实例属性和类属性 练习 为了统计学生人数,可以给Student类增加一个类属性,每创建一个实例,该属性自动增加: # -*- coding: utf-8 -*- ...

  5. 【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    文章目录 一. 代码生成控件 1. 创建设置项目 ( 1 ) 创建项目 ( ① 选择 Create a new Xcode project | ② 创建 Single View Application ...

  6. python基础:动态方法、私有属性、property、继承、重写、super、多态、符号重载、拷贝、组合、工厂模式,单例

    1.动态方法_代码示例 class Person:def work(self):print("努力上班!")def play_game(self):print("{0}玩 ...

  7. python面向对象编程指南 脚本之家_Python面向对象编程之继承与多态详解

    本文实例讲述了Python面向对象编程之继承与多态.分享给大家供大家参考,具体如下: Python 类的继承 在OOP(Object Oriented Programming)程序设计中,当我们定义一 ...

  8. 定义一个属性_Python property属性

    1. 什么是property属性 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法 # ############### 定义 ###############class Foo: def ...

  9. ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries......

    2015年6月17日 ECMAScript 6发布正式版本 前面介绍基本语法,  后面为class用法及属性方法.set.symbol.rest等语法. 一.基本语法:  1.         定义变 ...

最新文章

  1. HTML5 Canvas 基础API和实例
  2. hdfs通过接口退出安全模式_Hadoop之HDFS简介
  3. cocos2d-x 3.0 常见问题及解决
  4. 双指针解决力扣两/三数之和问题
  5. bzoj1083 [SCOI2005]繁忙的都市(最小生成树)
  6. 栈的顺序存储结构框架搭建
  7. java pixel data_java - JavaFX PixelWriter性能低下
  8. 15.explain
  9. 【2016年第1期】关于我国农业大数据中心建设的设想
  10. 关于Selenium2Library库导入PyCharm无法自动感知关键字的解决方法
  11. Visual Studio 2013安装教程
  12. Aras innovator: 如何制作一个itemtype的BOM结构
  13. LoadRunner报错vuser_init.c(18): Error: nca_connect_server: cannot communicate
  14. win10计算机管理中没有本地用户和组怎么办
  15. “库存商品”和“原材料”科目的使用区别?
  16. TimusOJ - 1225.Flags 1119.Metr 1009.K-based Numbers (DP简单题)
  17. idea maven 显示wating for maven import completionomitted for duplicate jar
  18. kubernetes之容器探针(liveness and readiness probe)
  19. 五款双11抢疯了的高性能蓝牙耳机,我手里的AIrPods真的不香了~
  20. 【查找】- 二分查找

热门文章

  1. 卷积神经网络特征图可视化及其意义
  2. ofstream 若文件不存在_C++文件操作详解(ifstream、ofstream、fstream)
  3. Linux字符串处理函数strdup、strndup、strndupa、strdupa
  4. Web安全测试(一)-手工安全测试方法修改建议
  5. Python廖雪峰教程学习笔记:Day3
  6. 白噪声(White noise)
  7. 中创09校园招聘试题
  8. solidwork学习
  9. Unity制作缓慢扣血效果
  10. #网页中动态嵌入PDF文件/在线预览PDF内容#