什么是类方法?[英] What is class method?

问题描述

你好,
我对静态方法的概念很熟悉,但是什么是类方法呢?
它与静态方法有何不同?什么时候用?
--
M类:
def 方法(cls, x):
通过

方法 = 类方法(方法)
--
感谢您抽出宝贵时间.

推荐答案

8 月 24 日下午 6:32*,Hussein B <hubaghd...@gmail.com 写道:
你好,
我对静态方法的概念很熟悉,但是什么是类方法呢?
它与静态方法有何不同?什么时候用?
--
M类:
*def 方法(cls, x):
** 通过

*方法 = 类方法(方法)
--
感谢您的时间.
首先,不要使用 method = classmethod(method).装饰者远
更好的.以下代码具有相同的效果:

M类:
@类方法
def 方法(cls, x):
通过

更具可读性,对吧?

如果你有很多继承发生,类方法很有用.
传入的第一个参数是调用该方法的类.好用
对于混合:它可以添加影响混合的实际类的方法


Hussein B <hu********@gmail.comwrites:
你好,
我对静态方法的概念很熟悉,但是什么是类方法呢?
它与静态方法有何不同?什么时候用?
--
M类:
def 方法(cls, x):
通过

方法 = 类方法(方法)
当您的方法需要知道从哪个类调用它时使用它.
这在子类化的上下文中是有意义的:

M类(对象):
@类方法
def 方法(cls, x):
打印 cls, x

N(M)类:
通过
>>M.method(1)
<class ''__main__.M''1
>>N.方法(1)
<class ''__main__.N''1

8 月 24 日凌晨 3:35*,MeTheGameMakingGuy <gopsychona...@gmail.com>
写道:
8 月 24 日下午 6:32*,侯赛因 B
你好,
我对静态方法的概念很熟悉,但是什么是类方法呢?
它与静态方法有何不同?什么时候用?
--
M类:
*def 方法(cls, x):
* * 经过
*方法 = 类方法(方法)
--
感谢您的时间.

首先,不要使用 method = classmethod(method).装饰者远
更好的.以下代码具有相同的效果:

M类:
*@classmethod
*def 方法(cls, x):
* 通过

更具可读性,对吧?

如果你有很多继承发生,类方法很有用.
传入的第一个参数是调用该方法的类.好用
对于混合:它可以添加影响混合的实际类的方法
进入,而不是弄乱混音本身.
类似于:

M类:#如图所示不正确
def newmaker(self, x):
newinst=self.__class__(arg1,arg2,x)
返回新目录

m1= M()
m2= m1.newmaker(''abc'')

除非您不需要第一个实例来执行此操作.注意你
获取任何类 m1 的新实例,而不是
一定是M.

N类(M):
通过

m1= N()
m2= m1.newmaker(''abc'')

m2 现在也属于 N 类了.

本文地址:https://www.itbaoku.cn/post/1050767.html