Python——属性和方法
一、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——属性和方法相关推荐
- Python属性、方法和类管理系列之----属性初探
在学习dict的时候,肯定听过dict是Python中最重要的数据类型,但是不一定知道为什么.马上你就会明白原因了. Python中从模块.到函数.到类.到元类,其实主要管理方法就是靠一个一个的字典. ...
- python属性和方法的区别_Python中几种属性访问的区别
起步 python的提供一系列和属性访问有关的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ .本文阐述它们的区别和用法. 属性的访问 ...
- python属性和方法的区别_Python中几种属性访问的区别与用法详解
起步 在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言, ...
- Python内部类,内部类调用外部类属性,方法
一 Python中内部类 典型定义: class MyOuter:age=18def __init__(self,name):self.name=nameclass MyInner:def __ini ...
- python类中的属性分为类属性和实例属性两种_python中类和实例如何绑定属性与方法示例详解...
前言 python类与实例的方法的调用中觉得云里雾里,思考之后将自己的想法记录下,一来加深自己理解,巩固自己记忆,而来帮助一些想要学习python的朋友理解这门抽象的语言,由于Python是动态语言, ...
- Python编程系列教程第12讲——属性和方法
视频地址:http://v.youku.com/v_show/id_XNTgyOTg4NjQ4.html 普及网络安全知识,推动信息技术发展. 为祖国的网络安全撑起一片蓝天,为网络安全爱好者构建一方家 ...
- Python 进阶_OOP 面向对象编程_实例属性和方法
目录 目录 构造器和解构器 构造器 __init__ 真构造器 __new__ 解构器 __del__ 实例方法 Python 中的 抽象方法 实例属性 查看实例属性 实例属性和类属性的区别 访问不可 ...
- 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解
第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一. 引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...
- python私有方法应用场景_Python私有属性私有方法应用实例解析
01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 对象 ...
最新文章
- 剑破冰山—Oracle开发艺术 书评(by ora-600)
- sonar:查询全部项目的bug和漏洞总数(只查询阻断/严重/主要级别)
- 转:Java学习路线图,专为新手定制的Java学习计划建议
- (转)Response.Redirect 打开新窗口的两种方法
- yarn client 提交任务
- OpenCV SURF FLANN匹配的实例(附完整代码)
- 第八模块:算法设计模式、企业应用 第2章 企业应用工具学习
- jsp实现数据禁用和只读
- JavaScript日期格式化处理
- POSIX 串口编程指南
- ssh 免密码登录远程主机 免登录运行指令
- Leetcode每日一题:345.reverse-vowels-of-a-string(反转字符串中的元音字母)
- 一文看懂大数据领域的六年巨变
- 【Oracle批量更新】根据一个大表批量更新另一大表的方法比较
- PHP连接mysql8.0出错“SQLSTATE[HY000] [2054] The server requested authentication method unknow........
- 使用Dom4j的xPath解析xml文件------xpath语法
- signal(SIGHUP, SIG_IGN)的含义
- vs2015使用教程
- 得到APP之订阅专栏《硅谷来信》和《精英日课》目录
- 目前最完美的魔兽世界服务端AzerothCore,Window系统小白10分钟搭建教程
热门文章
- 漫步者蓝牙耳机w800x看油管视频自动关机问题解决办法
- Makefile中的make命令使用(一)
- USTC English Club Note20211113
- Linux进程优先级的调整
- 使用Windows官方的创建器创建启动盘并装机
- 使用Sourcetree解决git冲突
- html怎样将四个li平均横放,css html 4图横向排列 自适应宽度,多图横向排列 li横向 li自适应...
- python hashlib_python import hashlib出现问题
- td是什么意思php,td是什么意思
- 东软集团、红星美凯龙、TCL、中国移动都在用的自动化测试工具