Python面向对象之属性
属性的定义和调用
1,定义时,在普通方法的基础上添加@property装饰器
2,定义时,属性仅有一个self参数
3,调用时,无需括号
vim day7-8.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
class Pager(): def __init__(self,current_page):
self.current_page = current_page #代表第几页
self.per_items = 10 #每页显示行数 @property
def start(self): #开始的序号
val = (self.current_page - 1) * self.per_items + 1
return val @property
def end(self): #结束序号
val = self.current_page * self.per_items
return val p = Pager(2)
print p.start
print p.end
使用以上方法可以根据页数取得需要查询的数据的序号开始和结束值
这里使用属性的方法是为了调用看起来更加合理
取消属性装饰器,调用的时候就要加()
所以以上代码和以下代码的效果的一样的
#!/usr/bin/python
# -*- coding:utf-8 -*-
class Pager(): def __init__(self,current_page):
self.current_page = current_page #代表第几页
self.per_items = 10 #每页显示行数 # @property
def start(self): #开始的序号
val = (self.current_page - 1) * self.per_items + 1
return val # @property
def end(self): #结束序号
val = self.current_page * self.per_items
return val p = Pager(2)
print p.start()
print p.end()
PS:属性在编程时可能用不上,知道即可
属性有两种表达方式一种是加property装饰器一种是使用property方法
对于新式类不仅仅支持property还支持
vim day7-9.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
class Goods(object): @property
def price(self):
print '@property' @price.setter
def price(self,value):
print '@property.setter' @price.deleter
def price(self):
print '@property.deleter' obj = Goods() obj.price #自动执行 @property修饰的price方法,并获取方法的返回值
obj.price = 123 #自动执行 @price.setter装饰的price方法,并将123赋值给方法
del obj.price #自动执行 @price.deleter装饰的price方法
~
PS:知道即可,很少用
Python面向对象之属性的更多相关文章
- python 面向对象 私有属性
__init__构造函数 self.name = name # 属性, 实例变量,成员变量,字段 def sayhi()# 方法, 动态属性 私有属性不对外看到 前面加上__ class role() ...
- python面向对象之类属性,实例属性
python中的属性分为类属性和实例属性,之前已经说过一些,这里主要是对类属性与实例属性的增删改查 首先是对类属性的增删改查,下面这个是对类属性的修改,在书写类时,已经对类属性occupation进行 ...
- python 面向对象 公有属性
公有属性定义 公有属性也叫作类变量 静态字段 class role(): # 传参数 # 公有属性都在这里定义 # 在类里直接定义的属性即是公有属性 nationality = 'JP' def ...
- Python面向对象之类属性类方法静态方法
类的结构 实例 使用面向对象开发时,第一步是设计类: 当使用 类名() 创建对象时,会自动执行以下操作: 1.为对象在内存中分配空间--创建对象: 2.为对象的属性 设置初始值--初始化方法(init ...
- Python面向对象 | 类属性
property property是一个装饰器函数,可以将一个方法伪装成属性,调用的时候可以不用加().@property被装饰的方法,是不能传参数的,因为它伪装成属性了. 装饰器的使用:在要装饰的函 ...
- python -- 面向对象编程(属性、方法)
一.属性 对象的属性(attribute)也叫做数据成员(data member). 如果想指向某个对象的属性,可以使用格式: object.attribute 属性又分为:私有属性和公有属性. 私有 ...
- python 面向对象 公有属性 用在哪里
公有属性也可以叫做静态字段 如果每个对象都有一个共同的值 , 应该把它设置为公有属性 公有属性使用场景,每个对象中保存相同的东西时,可以使用公有属性 类找公有属性 过程
- Python面向对象—类属性和实例属性
属性:就是属于一个对象的数据或函数元素 类有类方法.实例方法.静态方法.类数据属性(类变量)和实例数据属性(实例变量). 类属性:包括类方法和类变量,可以通过类或实例来访问,只能通过类来修改. 实例属 ...
- python面向对象基础-属性/方法
随机推荐
- 带有logo的二维码
摘要: 前面介绍了使用javascript生成二维码,但是这样并不能满足我们的需求,我们有时也会看到带有logo的二维码,本文就介绍如何生成带有logo的二维码. 简介: 主要使用了svg的文本和图像 ...
- python tornado异步性能测试
测试两个接口 # -*- coding:utf-8 -*- import time import tornado.web import tornado.gen import tornado.ioloo ...
- C# IsBackground作用
https://blog.csdn.net/snakorse/article/details/43888847 要点: 1.当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为 ...
- Spring-Mybatis --- 配置SqlSessionFactoryBean,整合Spring-Mybatis
要利用Mybatis首先是需要导入mybatis-x.x.x.jar,其次,要整合Spring和Mybatis需要导入mybatis-spring-x.x.x.jar. JAR : mybatis-x ...
- 使用pull方式解析xml文件示例:
网上的示例太多,基本类似,个人在此做个简单的总结: 1.首先在工程的asserts目录下建一个book.xml文件: <?xml version="1.0" encoding ...
- windows防火墙设置端口开放技巧
选择“打开或者关闭windows防火墙”把防火墙打开,然后选择“高级设置”,选择“创建规则”来指定端口.(这里也可以在“入站规则”里选择已经存在的端口.) 指定ip开放3389端口 某新服务器,开放8 ...
- hive 安装记录
http://www.cnblogs.com/linjiqin/archive/2013/03/04/2942402.html
- centos7/nginx/tornado错误异常收集
临时方法 – 设置系统参数 使用命令setenforce 附: setenforce 设置SELinux 成为enforcing模式 setenforce 设置SELinux 成为permissive ...
- PyQt4简单的窗口程序
下面的程序显示了一个简单的小窗口. #!/usr/bin/python # -*- coding:utf-8 -*- import sys from PyQt4 import QtGui app = ...
- 音频中PCM的概念
本文取自由http://blog.csdn.net/droidphone一部分 1. PCM是什么 PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制.我们知道在现实 ...