2016 - 2024

感恩一路有你

python的class用法 Python中的classmethod和staticmethod有什么具体用途?

浏览量:2572 时间:2021-03-13 16:15:18 作者:admin

Python中的classmethod和staticmethod有什么具体用途?

classmethod和staticmethod在不需要实例化的情况下,能够让类方法在类以外直接调用。

区别在以下两个方面:

1.classmethod类方法,必须把类作为第一个参数,「可以访问类变量」,可以通过实例名或类名访问;

2.staticmethod静态方法,不强制传入self或者cls,对类和实例都一无所知(相当于把类方法变成一个普通的方法,与类无关),「不能访问类变量」,「也不能访问实例变量」;可以通过实例名或类名访问。


具体用途为:

1.classmethod类方法,依赖self或者cls传参,所以必须写在类里,与类强关联,可以在类之外,访问类变量;

2.staticmethod静态方法,完全独立于类,因此不能访问类方法。


就那么简单,根据是否需要访问类变量,取决于是否需要访问类方法。


说通俗点,就是方便在没有实例化的情况下,直接调用类方法,上述两个东西都能实现该目的。

python类里面的class是什么意思啊?求?

python这方面很灵活。其实java也一样允许这样子。你几乎可以在任何情况下做任何事情。通常classMeta可以放在外面。不过,这样它就不能直接访问父类的一些属性了。所以在python里class如果放在另一个class里面,通常并不是为了隐藏这个class,并不是让别人看不到它。而因为它需要父类里的一些属性。需要共享。另外直接在类里定义的一些变量,比如queryset,也是属于类全局级的。只要引用了这个类,即使没有初始化,这些变量也已经实例化。这个有些象是java里static的全局定义结果。我们通常用这个方法来在不同的函数变量间共享一部分数据。同时又不需要初始化一个实例并用指针指向这一部分数据。而是通过类名直接引用。比如下面的一个用法classConfig:passConfig.user_name="xxx"Config.password="yyyy"这样。只要你在当前模块里,通过Config就可以引用到user_name和password,而不需要global这个修饰符。

python class和def的区别?

class是数据类型中的类,它封装了一些数据成员和操作方法,以供类或子类的实例使用;

而def是define(定义)的简写,通常用于声明接下来的是一个定义。

python的class用法 def在python中的意思 python调用class定义的函数

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。