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
0
投稿
猜你喜欢
- Web_THBC 为表示层也就是页面(.aspx) BLL_THBC 为业务逻辑层 DAL_THBC 为数据库交互层 (向数据库执行SQL语
- XML(可扩展标记语言)已成为Web应用中数据表示和数据交换的标准,随着Internet的快速发展,尤其是电子商务,Web服务等应用的广泛使
- Python 数字类型Python 中有三种数字类型:intfloatcomplex为变量赋值时,将创建数值类型的变量:实例x = 10 &
- 一、需求描述web 自动化测试/python爬虫往往会遇到扫码登录的情况,不是所有的网站都支持用户密码登录,遇到这种扫码登录的情况会阻碍我们
- 实例如下所示:from pandas import *from random import *df = DataFrame(columns=
- 之前没有注意过div的background-image这个属性,只是设置它的url,今天遇到一个问题特此做一下记录。 <div id=
- 在CSS中,实现分栏布局有两种方法。第一种方法是使用四种CSS定位选项(absolute 、static、relative和fixed)中的
- 在调试爬虫的时候,新手都会遇到关于ip的错误,好好的程序突然报错了,怎么解决,关于ip访问的错误其实很好解决,但是怎么知道解决好了呢?怎么确
- 于是写测试程序。。。不行 下载最新的ODBC。。。还是不行 通过sql plus查询。。。咦?竟然也查不到。。。 于是,折腾。。。折腾。。。
- 本文实例讲述了Python实现的多线程http压力测试代码。分享给大家供大家参考,具体如下:# Python version 3.3__au
- 官网: https://matplotlib.org一、版本# 01 matplotlib安装情况 import matplotlib ma
- 下一代的 web 已经开始上路了,就在这个星期,MySpace 集成了 Google Gears,雅虎发布了新的 BrowserPlus,G
- eval()函数eval() 函数用来执行一个字符串表达式,并返回表达式的值。语法eval(expression[, globals[, l
- 1、纯粹的截取字符串function cutstr(thestr1,strlen) dim l,t,c&nbs
- 先看一下br怎么玩转“清除浮动”了。使用以下代码<br clear="all" />以下是代码效果演示:运行
- 如何提高Request集合的使用效率?以加快程序处理速度: strTitle=Request.Form("Title&q
- 之前用Crystal做了一个数字转English Word的Formula刚刚心血来潮, 大半个晚上写了JS版本的数字转换, 由于JS的Bu
- 很多开发者说自从有了 Python/Pandas,Excel 都不怎么用了,用它来处理与可视化表格非常快速。下面我来举几个例子。1. 删除重
- 使用 Response.Redirect "aspxhome.asp" 转向方法的HTTP Status Code 为3
- 实例是具象化的类,它可以作为类访问所有静态绑定到类上的属性,包括类变量与方法,也可以作为实例访问动态绑定到实例上的属性。实例1:class