面向对象编程之classmethod和staticmethod

classmethodstaticmethod都是python内置的装饰器

classmethod 的作用:给在类内部定义的方法装饰,将类的内部方法变为类的绑定方法

绑定方法的特殊之处是会将对象本省当作第一个参数传入方法中

类的绑定方法:由类来调用,哪个类调用,就默认将哪个类当作第一个参数传入

class DB:
__data = "lee is a big haha!" def __init__(self, user, pwd):
self.user = user
self.pwd = pwd # 查看数据方法
# 使用classmethod装饰器 让DB类直接调用check_db()
@classmethod
def check_db(cls, user, pwd):
if user == "dawn" and pwd == "123":
print("校验通过……")
print(cls.__data) # 一般都是通过创建对象,通过对象.方法() 调用方法
db_obj = DB("lee", "123")
db_obj.check_db("dawn", "123") # 输出结果:校验通过…… lee is a big haha!
# 给类中的check_db()加上classmethod 装饰,让类直接调用看看
DB.check_db("dawn", "123") # 输出结果:校验通过…… lee is a big haha!

staticmethod 的作用:给在类内部定义方法中装饰,将类内部的方法变为非绑定方法

非绑定方法:可以由类或对象来调用。不论是谁调用,方法中有几个参数,就要传入几个传参,跟调用函数的方式一样。

class Demo:
@staticmethod
def func(self):
print(self) # 创建对象调用func
demo = Demo()
# 理论上,不用传参,但不传参就报错
demo.func(1234) # 输出结果:1234 # 通过类调用func
# 理论上,不用传参,但不传参就报错
Demo.func(2345) # 输出结果:2345

总结:

对象的绑定方法

  • 由对象来调用,会将对象当做第一个参数传入给该方法。
  • 实现:在类内部定义(封装)一个方法即可

类的绑定方法

  • 由类来调用,会将类当做第一个参数传入给该方法。
  • 实现:在类内部方法中,使用classmethod装饰器即可

非绑定方法

  • 由对象/类来调用,由谁来调用,它都是一个普通函数,内部需要接受几个参数,就得传入几个。
  • 实现:在类内部方法中,使用staticmethod装饰器即可

python基础-内置装饰器classmethod和staticmethod的更多相关文章

  1. python基础之内置装饰器

    装饰器 简介 功能与格式 内置装饰器 @classmethod @propertry @staticmethod 其它 ---------------------------------------- ...

  2. python内置装饰器

    前言 接着上一篇笔记,我们来看看内置装饰器property.staticmethod.classmethod 一.property装饰器 1. 普通方式修改属性值 code class Celsius ...

  3. python基础语法16 面向对象3 组合,封装,访问限制机制,内置装饰器property

    组合: 夺命三问: 1.什么是组合? 组合指的是一个对象中,包含另一个或多个对象. 2.为什么要用组合? 减少代码的冗余. 3.如何使用组合? 耦合度: 耦: 莲藕 ---> 藕断丝连 - 耦合 ...

  4. python进阶04 装饰器、描述器、常用内置装饰器

    python进阶04 装饰器.描述器.常用内置装饰器 一.装饰器 作用:能够给现有的函数增加功能 如何给一个现有的函数增加执行计数的功能 首先用类来添加新功能 def fun(): #首先我们定义一个 ...

  5. classmethod、staticclassmethod内置装饰器函数

    # method 英文是方法的意思 # classmethod 类方法 # 当一个类中的方法中只涉及操作类的静态属性时,此时在逻辑上,我们想要直接通过类名就可以调用这个方法去修改类的静态属性,此时可以 ...

  6. python设计模式之内置装饰器使用(四)

    前言 python内部有许多内建装饰器,它们都有特别的功能,下面对其归纳一下. 系列文章 python设计模式之单例模式(一) python设计模式之常用创建模式总结(二) python设计模式之装饰 ...

  7. python基础——内置函数

    python基础--内置函数  一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...

  8. property内置装饰器函数和@name.setter、@name.deleter

    # property # 内置装饰器函数 只在面向对象中使用 # 装饰后效果:将类的方法伪装成属性 # 被property装饰后的方法,不能带除了self外的任何参数 from math import ...

  9. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

随机推荐

  1. Service__cmd安装MySQL并连接SQLyog

    整理记录关于使用cmd安装mysql的过程   1.配置环境变量 1) 计算机->属性->高级系统设置->环境变量 2)先添加变量 变量名:MYSQL_HOME 变量值:D:\mys ...

  2. SQL Server 完整备份遇到的一个不常见的错误

    1. 错误详情 有一次在手动执行数据库完整备份时遇到如下错误: 执行多次都是这个错误信息. 提示无法生成检查点,原因可能是由于系统资源(如磁盘或内存空间)不足或者有时是由于数据库损坏而造成的. 我们检 ...

  3. 受限玻尔兹曼机(Restricted Boltzmann Machine)

    受限玻尔兹曼机(Restricted Boltzmann Machine) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. 生成模型 2. 参数学 ...

  4. 元昊讲django框架

    一 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有 ...

  5. keras 学习笔记(一) ——— model.fit & model.fit_generator

    from keras.preprocessing.image import load_img, img_to_array a = load_img('1.jpg') b = img_to_array( ...

  6. idea安装破解一条龙

    1.官网下载2018.2月版本.(other version->选中2018.2) 2.下载JetbrainsCrack_jb51.rar http://wangshuo.jb51.net:81 ...

  7. Mac操作:Mac系统移动鼠标显示桌面(移动鼠标到角落)

    很多朋友都发现,有的人在用Mac的时候,鼠标一划就可以显示桌面,或者显示Launchpad.其实很简单,下面就介绍这个方法. 首先打开系统偏好设置: 然后点击红色圈中的图标:MissionContro ...

  8. 为Azure DevOps Server (TFS) 配置安全访问(HTTPS with SSL)

    Contents 1. 概述 2. HTTP和HTTS比较 支持HTTP和HTTPS两种方式 要求所有连接使用HTTPS 优点: 缺点: 3. 为Azure DevOps Server 配置安全访问 ...

  9. Python连载34-信息队列

    一.生产者消费者模型 1.一个模型.可以用来搭建消息队列:queue是一个用来存放变量的数据结构,特点是:先进先出 import threading import time import queue ...

  10. CodeForce 577B Modulo Sum

    You are given a sequence of numbers a1, a2, ..., an, and a number m. Check if it is possible to choo ...