面向对象编程之属性方法property
面向对象编程之属性方法
八股文如下:
property属性介绍
property属性就是负责把一个方法当做属性进行使用,这样做可以简化代码使用。当修改值或者设置值的时候只需要像属性那样使用。
定义property属性有两种方式
- 装饰器方式
- 类属性方式
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相关推荐
- python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别
1.#类方法@classmethod,只能访问类变量,不能访问实例变量,通过cls参数传递当前类对象,不需要实例化,直接[类名.方法名()],可通过类对象和类对象实例访问 类方法:第一个参数强制为类对 ...
- python静态方法,类方法,属性方法,实例方法
DAY 3. 静态方法,类方法,属性方法,实例方法 有四种方法,实例方法,类方法,静态方法,属性方法 实例方法 实例方法的第一个参数是self,他会指向类的实例化对象,只能被对象调用,如 class ...
- Python基础-面向对象编程之特性(property)
Python基础-面向对象编程之特性property Python面向对象编程之特性(property) 一.统一访问原则 二.使用特性进行拦截操作 三.老式写法 Python面向对象编程之特性(pr ...
- python面向对象编程之实例属性和类属性
廖雪峰python教程 面向对象编程之实例属性和类属性 练习 为了统计学生人数,可以给Student类增加一个类属性,每创建一个实例,该属性自动增加: # -*- coding: utf-8 -*- ...
- 【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )
文章目录 一. 代码生成控件 1. 创建设置项目 ( 1 ) 创建项目 ( ① 选择 Create a new Xcode project | ② 创建 Single View Application ...
- python基础:动态方法、私有属性、property、继承、重写、super、多态、符号重载、拷贝、组合、工厂模式,单例
1.动态方法_代码示例 class Person:def work(self):print("努力上班!")def play_game(self):print("{0}玩 ...
- python面向对象编程指南 脚本之家_Python面向对象编程之继承与多态详解
本文实例讲述了Python面向对象编程之继承与多态.分享给大家供大家参考,具体如下: Python 类的继承 在OOP(Object Oriented Programming)程序设计中,当我们定义一 ...
- 定义一个属性_Python property属性
1. 什么是property属性 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法 # ############### 定义 ###############class Foo: def ...
- ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries......
2015年6月17日 ECMAScript 6发布正式版本 前面介绍基本语法, 后面为class用法及属性方法.set.symbol.rest等语法. 一.基本语法: 1. 定义变 ...
最新文章
- HTML5 Canvas 基础API和实例
- hdfs通过接口退出安全模式_Hadoop之HDFS简介
- cocos2d-x 3.0 常见问题及解决
- 双指针解决力扣两/三数之和问题
- bzoj1083 [SCOI2005]繁忙的都市(最小生成树)
- 栈的顺序存储结构框架搭建
- java pixel data_java - JavaFX PixelWriter性能低下
- 15.explain
- 【2016年第1期】关于我国农业大数据中心建设的设想
- 关于Selenium2Library库导入PyCharm无法自动感知关键字的解决方法
- Visual Studio 2013安装教程
- Aras innovator: 如何制作一个itemtype的BOM结构
- LoadRunner报错vuser_init.c(18): Error: nca_connect_server: cannot communicate
- win10计算机管理中没有本地用户和组怎么办
- “库存商品”和“原材料”科目的使用区别?
- TimusOJ - 1225.Flags 1119.Metr 1009.K-based Numbers (DP简单题)
- idea maven 显示wating for maven import completionomitted for duplicate jar
- kubernetes之容器探针(liveness and readiness probe)
- 五款双11抢疯了的高性能蓝牙耳机,我手里的AIrPods真的不香了~
- 【查找】- 二分查找