一、property函数
学过Java的朋友应该对Java中类的属性和方法不会感到陌生,在Python中也一样,类中定义的属性方法(在没有增加访问限制的情况下)都可以通过实例化的队形进行访问,如下:

# _*_ coding:utf-8 _*_class A:def __init__(self):self.w=0self.h=0def getWH(self):return self.w,self.hdef setWH(self,size):self.w,self.h=size运算结果:
===========RESTART: C:\Users\Mr_Deng\Desktop\test.py===========
>>> testA=A()
>>> testA.getWH()
(0, 0)
>>> testA.setWH([10,20])
>>> testA.getWH()
(10, 20)
>>> 

就像上面一样在没有对属性和方法进行访问权限控制的情况下,可以通过实例化的对象访问类中的属性和方法。这里先介绍一个函数:Property,该函数可以将类中的定义的方法当做参数,如下:

# _*_ coding:utf-8 _*_
__metaclass__=type
class A:def __init__(self):self.w=0self.h=0def getWH(self):return self.w,self.hdef setWH(self,size):self.w,self.h=sizesize=property(getWH,setWH)运算结果:
===========RESTART: C:\Users\Mr_Deng\Desktop\test.py===========
>>> testA=A()
>>> testA.size
(0, 0)
>>> testA.size=11,22
>>> testA.size
(11, 22)
>>> 

注:property函数可以用0,1,2,3或者4个参数来调用,若果没有参数,产生的属性既不可以读也不可以写。property函数四个参数分别是fget、fset、fdel、doc。在上面的例子中,将getWH和setWH函数作为property函数的两个参数并将property函数创建的属性赋给size,通过这种方法,可以使得对类中的操作变得像访问属性一样。
二、静态方法和类成员方法
在python中静态方法和类成员方法的区别主要在于,静态方法定义中没有self参数,能够被类本身直接调用。类方法定义时需要名为cls的参数,类成员方法可以直接用类的具体对象调用。静态方法和类成员方法的定义和使用如下:

__metaclass__=type
class MyClass:def smethod():print('This is a static method')smethod=staticmethod(smethod)def cmethod(cls):print('This is a class method',cls)cmethod=classmethod(cmethod)

或者:

# _*_ coding:utf-8 _*_
__metaclass__=type
class MyClass:@staticmethoddef smethod():print('This is a static method')@classmethoddef cmethod(cls):print('This is a class method',cls)运算结果:
===========RESTART: C:\Users\Mr_Deng\Desktop\test.py===========
>>> MyClass.smethod()
This is a static method
>>> MyClass.cmethod()
This is a class method <class '__main__.MyClass'>
>>> 

三、setattr、getattribute、setatr函数

__getattribute__(self,name):当特性为name被访问时自动被调用
__getattr__(self,name):当特性name被访问且对象没有想用的特性时被自动调用。
__setatr__(self,name,value):给特性那么赋值时自动调用。
__delattr__(self,name):删除name时自动调用。

案例如下:

# _*_ coding:utf-8 _*_
class AA:def __init__(self):self.w=0self.h=0def __setattr__(self,name,value):if name=='test':self.w,self.h=vauleelse:self.__dict__[name]=valuedef __getattr__(self,name):if name=='test':return self.w,self.helse:raise AttributeError

Python——属性和方法相关推荐

  1. Python属性、方法和类管理系列之----属性初探

    在学习dict的时候,肯定听过dict是Python中最重要的数据类型,但是不一定知道为什么.马上你就会明白原因了. Python中从模块.到函数.到类.到元类,其实主要管理方法就是靠一个一个的字典. ...

  2. python属性和方法的区别_Python中几种属性访问的区别

    起步 python的提供一系列和属性访问有关的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ .本文阐述它们的区别和用法. 属性的访问 ...

  3. python属性和方法的区别_Python中几种属性访问的区别与用法详解

    起步 在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言, ...

  4. Python内部类,内部类调用外部类属性,方法

    一 Python中内部类 典型定义: class MyOuter:age=18def __init__(self,name):self.name=nameclass MyInner:def __ini ...

  5. python类中的属性分为类属性和实例属性两种_python中类和实例如何绑定属性与方法示例详解...

    前言 python类与实例的方法的调用中觉得云里雾里,思考之后将自己的想法记录下,一来加深自己理解,巩固自己记忆,而来帮助一些想要学习python的朋友理解这门抽象的语言,由于Python是动态语言, ...

  6. Python编程系列教程第12讲——属性和方法

    视频地址:http://v.youku.com/v_show/id_XNTgyOTg4NjQ4.html 普及网络安全知识,推动信息技术发展. 为祖国的网络安全撑起一片蓝天,为网络安全爱好者构建一方家 ...

  7. Python 进阶_OOP 面向对象编程_实例属性和方法

    目录 目录 构造器和解构器 构造器 __init__ 真构造器 __new__ 解构器 __del__ 实例方法 Python 中的 抽象方法 实例属性 查看实例属性 实例属性和类属性的区别 访问不可 ...

  8. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

  9. python私有方法应用场景_Python私有属性私有方法应用实例解析

    01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 对象 ...

最新文章

  1. python中的df是什么意思_在python中从df-h输出中选择特定列
  2. NSLog打印自定义对象
  3. sock 文件方式控制宿主机_nginx与php-fpm通信的两种方式
  4. 弱类型、强类型、动态类型、静态类型语言的区别是什么?
  5. 飞行熊猫游戏源码android版
  6. (视频+图文)机器学习入门系列-第5章 机器学习实践
  7. 邮件系统磁盘监控脚本
  8. linux修改python默认版本
  9. 程序员肚子越来越大_肚子越来越大,除了肥胖还可能是疾病信号!腰间搓一搓,排出痰浊,消脂防病~...
  10. android_secure写权限,如何在android中设置权限WRITE_SECURE_SETTINGS?
  11. Linux openJDK执行javac编译java文件提示command not found
  12. 超越苹果! 雷军愿望达成:小米,世界第三!
  13. 41 款实用工具,数据获取、清洗、建模、可视化都有了
  14. mysql 读未提交数据,MySql数据库的事务隔离级别学习
  15. 【国内首套H3C V7交换机实战课程-1】Comware V7使用、维护与管理-王达-专题视频课程...
  16. arcgis for js4.x自定义图例位置添加到地图并导出
  17. 【图像重建】基于Split Bregman实现稀疏图像重建附matlab代码
  18. 计算机存储盘设置密码,如何在USB驱动器上设置密码并教您如何设置
  19. 基于html+css的购物网站前端页面【折扣社】前端网站
  20. android游戏手柄,没手柄也不怕 键盘玩Android游戏攻略

热门文章

  1. WORD表格如何自适应横向排版?
  2. 拼多多开店要营业执照吗?宝讯网捷电商
  3. mysql怎么 计算周岁_C#计算周岁 - osc_h7d57ub2的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. 计算机专业英语教程柯晓华,计算机专业英语教程
  5. 跟南桑深入探究JVM
  6. VI/VIM 高清键位图
  7. 面试官:谈谈你对 Tomcat 调优的看法
  8. PPT基础(十三)项目符号
  9. 在Java绘图坐标原点在_java 绘图
  10. Java启动Tomcat