python静态方法和类方法的区别_python中类的静态方法和类的类方法

知识回顾:

上一节中,我们深化学习了类的属性监控,主要使用了三个魔法方法:__getattr__

__setattr__

__delattr__

与此同时在书写属性设置监控的时候,千万不要忘记写__dict__方法属性。

本节知识视频教程

以下开始文字讲解:

一、类的属性监控的作业

案例:使得类的某个属性值大于10

思路:

1.设置一个类

2.定义一个__setattr__方法,用来监控属性

3.类的实例化,设置类的属性

4.通过查看类的属性的值,来看属性监控是否成功

二、类的静态方法

在类中的方法名称前加一个头标记@staticmethod。

静态方法往往用于一些自定义的类来实现一些通用的功能,可以方便我们调用类的方法。

类的静态方法,不需要self这类参数,因为类的静态方法,不需要进行实例化,就可以进行调用。

三、类的类方法

在类中的方法名称前加一个头标记@classmethod。

类的类方法的调用也不需要进行实例化。

类的类方法是在python中对类的构造方法的一个补充。

四、静态方法的定义和调用方式

定义:

@staticmethod

def 类的方法名称:

方法主体

举例

@staticmethod

def say():

print("我们是静态方法,我不需要实例化,就可以被调用")

调用:

类的名称.方法名称()

Person.say()

类方法类似于静态方法

定义:

@classmethod

def setName(cls):

name="test类方法"

print(name)

调用:

Person.setName()

类的静态方法和类方法的区别主要是在方法定义的时候的头标记不同。但在定义类方法的时候需要一个类的本身的参数。

五、总结强调

1.掌握类的静态方法

2.掌握类的类方法

3.理解静态方法与类方法的区别

4.掌握属性监控的魔法方法书写的方式,不能漏掉类内部存储的__dict__字典存储。

源代码【作业代码】:class Person:

def __init__(self):

self.age=0

def __setattr__(self, key, value):

if(key=="nianling"):

if(value>10):

self.age=value

else:

print("年龄不符合条件")

else:

self.__dict__[key]=value

def __getattr__(self, item):

if(item=="nianling"):

return self.age

p=Person()

# print(p)

p.nianling=6

print(p.nianling)

本节知识源代码:#类的静态方法

class Person:

name=""

def __init__(self):

self.age=""

@staticmethod

def say():

print("我们是静态方法,我不需要实例化,就可以被调用")

@staticmethod

def sayHello(n):

name=n

print(name+"您好")

@classmethod

def setName(cls):

name="test类方法"

print(name)

Person.say()

Person.setName()

Person.sayHello("老刘")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值