前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python中类的静态方法和类的类方法

python中类的静态方法和类的类方法

作者头像
刘金玉编程
发布2019-08-30 13:34:04
3.1K0
发布2019-08-30 13:34:04
举报
文章被收录于专栏:编程创造城市

知识回顾:

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

  • __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__字典存储。

源代码【作业代码】:

代码语言:javascript
复制
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)

本节知识源代码:

代码语言:javascript
复制
#类的静态方法
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("老刘")
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程创造城市 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档