一、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. 剑破冰山—Oracle开发艺术 书评(by ora-600)
  2. sonar:查询全部项目的bug和漏洞总数(只查询阻断/严重/主要级别)
  3. 转:Java学习路线图,专为新手定制的Java学习计划建议
  4. (转)Response.Redirect 打开新窗口的两种方法
  5. yarn client 提交任务
  6. OpenCV SURF FLANN匹配的实例(附完整代码)
  7. 第八模块:算法设计模式、企业应用 第2章 企业应用工具学习
  8. jsp实现数据禁用和只读
  9. JavaScript日期格式化处理
  10. POSIX 串口编程指南
  11. ssh 免密码登录远程主机 免登录运行指令
  12. Leetcode每日一题:345.reverse-vowels-of-a-string(反转字符串中的元音字母)
  13. 一文看懂大数据领域的六年巨变
  14. 【Oracle批量更新】根据一个大表批量更新另一大表的方法比较
  15. PHP连接mysql8.0出错“SQLSTATE[HY000] [2054] The server requested authentication method unknow........
  16. 使用Dom4j的xPath解析xml文件------xpath语法
  17. signal(SIGHUP, SIG_IGN)的含义
  18. vs2015使用教程
  19. 得到APP之订阅专栏《硅谷来信》和《精英日课》目录
  20. 目前最完美的魔兽世界服务端AzerothCore,Window系统小白10分钟搭建教程

热门文章

  1. 漫步者蓝牙耳机w800x看油管视频自动关机问题解决办法
  2. Makefile中的make命令使用(一)
  3. USTC English Club Note20211113
  4. Linux进程优先级的调整
  5. 使用Windows官方的创建器创建启动盘并装机
  6. 使用Sourcetree解决git冲突
  7. html怎样将四个li平均横放,css html 4图横向排列 自适应宽度,多图横向排列 li横向 li自适应...
  8. python hashlib_python import hashlib出现问题
  9. td是什么意思php,td是什么意思
  10. 东软集团、红星美凯龙、TCL、中国移动都在用的自动化测试工具