Python实例方法、类方法、静态方法区别详解
作者:多测师_郑sir 发布时间:2021-05-31 21:35:58
标签:Python,实例,类,静态,方法
1、关于参数的区别
实例方法:定义实例方法是最少有一个形参 ---> 实例对象,通常用 self
类方法:定义类方法的时候最少有一个形参 ---> 类对象,通常用 cls
静态方法:定义静态方法的时候可以不定义形参
2、关于方法定义时候添加装饰器的区别
实例方法:不需要添加装饰器
类方法:需要添加装饰器 ----> @classmethod
静态方法:需要添加装饰器 ---> @staticmethod
3、调用:
1.实例方法可以通过对象直接调用
2.但是用类名调用的时候,需要创建一个对象,并且在传递参数的时候要将对象传递进去
3.类方法可以通过类名直接调用,也可以通过对象来调用
4.静态方法可以通过类名直接调用,也可以通过对象来调用
4、补充
1.静态方法不可以继承
2.类方法不能访问实例变量,只能访问类变量
class Dog():
age = 3 # 类变量
def __init__(self):
self.name = "XiaoBai" # 实例变量
def run(self): # 实例方法
print("{} years old's {} is running!".format(self.age,self.name))
@classmethod
def eat(cls):
# print(cls.name) # 类方法,不能访问实例变量(属性)
print("XiaoHei is {} years old".format(cls.age)) # 类方法只能访问类变量
@staticmethod
def sleep(name):
# 静态方法与类无关,只能类中的一个功能而已
# 静态方法不能访问类变量和实例变量
print("{} is sleeping".format(name))
d = Dog()
d.run() # 通过实例化对象调用实例方法
Dog.run(d) # 通过类名称调用实例方法,需要在方法中传入实例对象
d.eat() # 通过实例化对象调用类方法
Dog.eat() # 通过类名称调用类方法
d.sleep("XiaoLan") # 通过实例化对象调用静态方法
Dog.sleep("XiaoLan") # 通过类名称调用静态方法
来源:https://www.cnblogs.com/ZhengYing0813/p/13544340.html


猜你喜欢
- 如下所示:import ioimport torchimport torch.onnxfrom models.C3AEModel impor
- 研究好多天了,也试过好多办法了,总结出目前发现最好的方法:先说一下基本的东西:<%@ codepage=65001%>
- 谈及鼠标事件,就是在触发鼠标按钮后程序所做出相应的反应,但是不影响程序的整个线程。这有些像异步处理。鼠标事件响应不会一直等着我们去按而后续程
- Sql代码 select count(*) from user_objects where object_name=upper(p_tabl
- 一、环境要求windows系统,python3.6+安装模块pip install pyqt5pip install pygame二、游戏介
- 有时候我们会截取字符串中的一些特殊想要的东西,大小写字母、模号、汉字、数字等等,今天先介绍一个获取字符串中小写字母(也是大写字母)的方式,直
- 恭喜您,您中奖了,你的中奖码是(请牢记,领奖需要):XXXXXXXXXXX然后用户输入XXXXXXXXXXX,简单验证后就可以领奖了。你使用
- 中小站点简单备份策略基于drupal的中小行网站,我们可以使用backup_migrate模块,该模块提供了定期备份的功能,备份的时间、保留
- 组件<template><div> <input id="upload_file&quo
- #!/usr/bin/python# -*- coding: utf-8 -*-from scapy.all import *from ti
- 前言聚合函数用来对表中的数据进行统计和计算。users表结构如下:什么是聚合函数聚合函数是用来做简单的数据统计的,比如说统计一下 &
- 一、多线程共享全局变量首先我们来回忆下在函数中修改全局变量的情况。在一个函数中,对全局变量进行修改的时候,到底是否需要使用 global 进
- TensorFlow是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine
- Properties类简要概括: Properties类是 键和值均为字符串的可以永久存储到文件中的key-value集合java.util
- 引言接口测试就是数据的测试,在测试之前,需要准备好测试数据,而测试数据可以用数据库、excel、txt和csv方式,当然还有一种方式,那就是
- python可以方便地支持多线程。可以快速创建线程、互斥锁、信号量等等元素,支持线程读写同步互斥。美中不足的是,python的运行在pyth
- XML被设计用来描述数据,其焦点是数据的内容。HTML被设计用来显示数据,其焦点是数据的外观。  
- 卷积在pytorch中有两种实现,一种是torch.nn.Conv2d(),一种是torch.nn.functional.conv2d(),
- Python则是通过缩进来识别代码块的。缩进Python最具特色的是用缩进来标明成块的代码。我下面以if选择结构来举例。if后面跟随条件,如
- 1.数组的索引我用的是iloc函数。导入数据是data,索引data.iloc[i,j],i代表行,j代表列。如果要索引i行之后的所有行元素