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("老刘")

原文发布于微信公众号 - 编程创造城市(bcczcs)

原文发表时间:2019-08-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券