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("老刘")
相关文章
|
5天前
|
C++ 开发者 Python
实现Python日志点击跳转到代码位置的方法
本文介绍了如何在Python日志中实现点击跳转到代码位置的功能,以提升调试效率。通过结合`logging`模块的`findCaller()`方法记录代码位置信息,并使用支持点击跳转的日志查看工具(如VS Code、PyCharm),开发者可以从日志直接点击链接定位到出错代码,加快问题排查。
14 2
|
5天前
|
索引 Python
Python 中寻找列表最大值位置的方法
本文介绍了Python中找列表最大值及其位置的三种方法:1) 使用内置`max()`和`index()`函数;2) 通过循环遍历;3) 利用`enumerate()`函数和生成器表达式。每种方法均附有示例代码,其中`enumerate()`方法在保证效率的同时代码更简洁。
29 2
|
5天前
|
JSON 数据处理 数据格式
Python中批量提取[]括号内第一个元素的四种方法
Python中批量提取[]括号内第一个元素的四种方法
23 1
|
5天前
|
SQL 关系型数据库 数据库连接
使用 Python 访问数据库的基本方法
【5月更文挑战第12天】在Python中操作数据库涉及安装数据库驱动(如mysql-connector-python, psycopg2, pymongo)、连接数据库、执行查询/更新、处理结果集及关闭连接。使用ORM(如SQLAlchemy)可简化操作。通过上下文管理器(with语句)能更好地管理资源和错误。注意根据实际需求处理事务、错误和安全性,例如使用SSL连接。
23 2
|
4天前
|
Python
Python-类视图和蓝图
Python-类视图和蓝图
11 2
|
4天前
|
存储 Java 数据安全/隐私保护
Python----类对象和实例对象
Python----类对象和实例对象
9 2
|
5天前
|
测试技术 开发者 Python
Python检查函数和方法的输入/输出
【5月更文挑战第5天】Python检查函数和方法的输入/输出
13 1
|
5天前
|
Python
【Python进阶(二)】——程序调试方法
【Python进阶(二)】——程序调试方法
|
5天前
|
C++ Python
Python中的类与对象
Python中的类与对象
8 1
|
Python
【Python零基础入门篇 · 23】:类的继承(单继承和多继承)、继承重写
【Python零基础入门篇 · 23】:类的继承(单继承和多继承)、继承重写
106 0
【Python零基础入门篇 · 23】:类的继承(单继承和多继承)、继承重写