静态属性:即将类的函数通过@property属性封装,封装后实例调用该函数时,不再需要在函数后面加(),而是用类似调用数据属性的方式直接调用函数名称即可执行函数。

静态属性既可以访问类的属性,也可以访问实例的属性。

类方法:即在类的函数前加@classmethod属性,函数第一个参数为cls类,表示该函数是类的方法,而不需要绑定具体实例。

在类方法里面可以调用类的属性,并且在类调用该函数时,会将自身作为第一个参数传入,类方法不能访问实例。实例可以调用类方法。

静态方法,即在类的函数前加@staticmethod属性,函数参数既没有cls类,也没有self实例,表示该函数是类的工具包,与类本身和实例都没有绑定关系。

静态方法由于没有类和实例参数,所以不能访问类和实例的属性。实例可以调用静态方法。

普通方法:指既没有上述三种修饰符,也不是常规的函数的方法,可以定义,类可以调用但实例不能调用,这种方法其实是没有意义的,不建议使用。实例不能调用普通方法。

class room:
tag=1
def __init__(self, name,length,width,height):
self.name=name
self.length=length
self.width=width
self.height=height
@property #通过类提供的property对求面积的函数进行封装
def square(self):
s=self.length*self.width
print('%s的面积为%s'%(self.name,s))
@classmethod
def volumn(cls,length,width,height): #第一个参数为cls,即类
v=length*width*height
print('访问类的属性%s'%cls.tag) #类方法可以访问类的属性
print('类%s的体积为%s'%(cls,v))
@staticmethod
def haha(x,y): #静态方法既没有类cls参数,也没有实例self参数,因此不能访问类和实例的属性
print('From staticmethod,%s and %s is haha'%(x,y))
def hahahaha(x,y): #可以这样定义普通方法,但不建议这样使用,没有意义
print('From common method,%s and %s is hahahaha' % (x, y))
room1=room('room1',10,13,3)
room1.square #直接调用求面积的函数方法就可以执行函数,而不需要加()
room.volumn(10,13,3) #类调用类方法时,将类自身作为第一个参数传入
room.haha('Jane','Alan')
room.hahahaha('Jane','Alan') # 执行结果:
# room1的面积为130
# 访问类的属性1
# 类<class '__main__.room'>的体积为390
# From staticmethod,Jane and Alan is haha
# From common method,Jane and Alan is haha

最新文章

  1. Android多线程通信机制
  2. hdu2546 01背包
  3. 关于NSLog
  4. python 的import机制2
  5. soap协议有get方式
  6. linux僵死进程的产生与避免
  7. (转)单例模式(Singleton)
  8. javaWeb内置对象
  9. Gitlab的安装与实践
  10. Word 2007 封面、目录和正文页码单独设置
  11. 锐捷交换机配置DHCP SERVER给固定的MAC地址分配静态IP
  12. RecycleView设置顶部分割线(记录一个坑)
  13. LeetCode算法题-Binary Tree Tilt(Java实现)
  14. [STM32F103]串口UART配置
  15. ASP.NET Core 集成测试
  16. [ 低危 ] mt网CRLF
  17. MBR内容解析
  18. Node json
  19. K8s核心概念详解
  20. Linux系统排查4——网络篇

热门文章

  1. 添加了unimportant 之后,需要调整的参数
  2. 纯真IP数据库格式详解 附demo
  3. Git Your branch is ahead of &#39;origin/master&#39; by X commits解决方法
  4. vue中computed和watch的写法,以及区别
  5. React/VUE 脚手架2.0和3.0
  6. NewWord
  7. shell编程:for循环
  8. Ajax-创建ajax
  9. 如何用vue组件做个机器人?有趣味的代码
  10. Ajax三级联动