Python——属性和方法
来源:互联网 发布:c语言学会了可以干吗 编辑:程序博客网 时间:2024/06/07 00:40
一、property函数
学过Java的朋友应该对Java中类的属性和方法不会感到陌生,在Python中也一样,类中定义的属性方法(在没有增加访问限制的情况下)都可以通过实例化的队形进行访问,如下:
# _*_ coding:utf-8 _*_class A: def __init__(self): self.w=0 self.h=0 def getWH(self): return self.w,self.h def 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__=typeclass A: def __init__(self): self.w=0 self.h=0 def getWH(self): return self.w,self.h def setWH(self,size): self.w,self.h=size size=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__=typeclass 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__=typeclass MyClass: @staticmethod def smethod(): print('This is a static method') @classmethod def 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=0 self.h=0 def __setattr__(self,name,value): if name=='test': self.w,self.h=vaule else: self.__dict__[name]=value def __getattr__(self,name): if name=='test': return self.w,self.h else: raise AttributeError
0 0
- Python——属性和方法
- Python属性和方法
- Python属性和方法
- Python属性和方法
- python之方法和属性
- python的属性和方法
- Python学习笔记【九】——《python基础教程》:: 魔法方法、属性和迭代器
- Python编程系列教程第12讲——属性和方法
- python学习笔记——第九章 属性 方法和迭代器
- Python基础教程第九章学习笔记——魔法方法、属性和迭代器
- python面向对象-属性和方法
- python特殊属性和方法的运用
- python特殊属性和方法的运
- python里的属性和方法
- Python特殊属性和方法的运用
- python中魔法属性和魔法方法
- python 类的私有属性和方法
- python学习笔记(属性和方法)
- Java中计算销售利润的奖金值
- 【软件开发工具】——大题整理
- Hello,world!
- C++ Socket5客户端链接源码
- unity 使用Camera模拟人物的阴影
- Python——属性和方法
- S5PV210串口通信
- [LeetCode]--349. Intersection of Two Arrays
- windows下的MySQL-子查询
- CSS之loader特效收藏
- java如何记录方法运行时间?
- hdu 1556 Color the ball
- 深入浅出RxJava三--响应式的好处
- 关于@override报错的问题