千锋教育-做有情怀、有良心、有品质的职业教育机构

Python 类方法,静态方法的定义

来源:千锋教育
发布时间:2023-11-07 12:10:40
分享

python是双面向的,既可以面向函数编程,也可以面向对象编程,所谓面向函数就是单独一个.py文件,里面没有类,全是一些函数,调用的时候导入模块,通过模块名.函数名()即可调用,完全不需要类,那么你可能会问,那要类还有什么毛用?类就是用来面向对象编程啦,类可以有自己的属性,类可以创建很多实例,每个实例可以有不同的属性,这也就保存了很多私有的数据,总之都有存在的必要.

面向对象程序设计中,类方法和静态方法是经常用到的术语,逻辑上将:类方法只能由类名调用,静态方法可以由类名或者对象名调用。在python语法中,类有三种方法,分别是实例方法,静态方法,类方法

classFoo(object):

'''类三种方法语法形式'''

#在类中定义普通方法,在定义普通方法的时候,必须添加self

definstance_method(self):

print("是类{}的实例方法,只能被实例对象调用".format(Foo))

#在类中定义静态方法,在定义静态方法的时候,不需要传递任何类的东西

@staticmethod

defstatic_method():

print("是静态方法")

#在类中定义类方法,在定义类方法的时候,需要传递参数clscls即为类本身

@classmethod

defclass_method(cls):

print("是类方法")

foo=Foo()

foo.instance_method()

foo.class_method()

foo.static_method()

print("---------------")

Foo.static_method()

Foo.class_method()

可以看出:

实例方法只能被实例对象调用,静态方法(由@staticmethod装饰的方法)、类方法(由@classmethod装饰的方法),可以被类或类的实例对象调用。

实例方法,第一个参数必须要默认传实例对象,一般习惯用self。对象方法中有self参数,类方法有cls参数,静态方法是不需要这些附加参数(在c++中,是没有类这个概念)

静态函数(@staticmethod):即静态方法,静态方法是一类特殊的方法,有时候你可能需要填写一个属于这个类的方法,但是这些代码完全不会使用到实例对象本身。它主要处理这个类的逻辑关联,如验证数据;而且对参数没有要求。

类方法(@classmethod):即类方法,类方法不是绑定到对象上,而是绑定在类上的方法,它更关注于从类中调用方法,而不是从实例中调用方法,如构造重载;

成员函数:实例的方法,只能通过实例进行调用;第一个参数必须要默认传类,一般习惯用cls。

以上内容为大家介绍了Python类方法,静态方法的定义,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • Python编程进阶,常用八大技巧! 整理字符串输入整理用户输入的问题在编程过程中极为常见。通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作。但是如果问题很复杂,可能有更好的方法来解决:us
  • BP神经网络与Python 人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善.联想大家熟悉的回归问题,神经网络模型实际上是根据训练样本创造出一个多维输入多维输出的函数,并使用该函数进行预测,网络的训练
  • Python实现BP神经网络 首先实现几个工具函数:defrand(a,b):return(b-a)*random.random()+adefmake_matrix(m,n,fill=0.0):#创造一个指定大小的矩阵mat=[]
  • Python NumPy NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了CPython的GIL(全局解释器锁),运行效率极好,是大量
  • Python 函数内变量的作用域 变量的作用域与其定义的方式有关:局部变量:变量在函数内部定义,则变量的作用域在函数内部全局变量:变量在函数外部定义的,则变量的作用域是全局global:用来在函数或其他局部作用域中,声明全局变量。(作
  • Python 内嵌函数和闭包 内嵌函数:在函数内部定义函数,就是函数里面嵌套函数闭包:一个闭包就是你调用了一个函数A,这个函数A返回了一个函数B给你。这个返回的函数B就叫做闭包。(但是B函数,一定要是嵌套在函数A里面)。你在调用函