当前位置: 移动技术网 > IT编程>脚本编程>Python > Python classmethod 修饰符

Python classmethod 修饰符

2019年09月16日  | 移动技术网IT编程  | 我要评论

道士下山西瓜在线观看,浴室征婚门,墨鲤抄

描述

classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。

语法

classmethod 语法:

classmethod

参数

  • 无。

返回值

返回函数的类方法。

实例

以下实例展示了 classmethod 的使用方法:

# !/usr/bin/python
# -*- coding: utf-8 -*-

class a(object):
    bar = 1
    def func1(self):
        print('foo')
    @classmethod
    def func2(cls):
        print('func2')
        print(cls.bar)
        cls().func1()# 调用 foo 方法
        
a.func2()# 不需要实例化

 

输出结果为:

func2
1
foo

上面是例1,下面是例2

class a(object):

    # 属性默认为类属性(可以给直接被类本身调用)
    num = "类属性"

    # 实例化方法(必须实例化类之后才能被调用)
    def func1(self): # self : 表示实例化类后的地址id
        print("func1")
        print(self)

    # 类方法(不需要实例化类就可以被类本身调用)
    @classmethod
    def func2(cls):  # cls : 表示没用被实例化的类本身
        print("func2")
        print(cls)
        print(cls.num)
        cls().func1()

    # 不传递传递默认self参数的方法(该方法也是可以直接被类调用的,但是这样做不标准)
    def func3():
        print("func3")
        print(a.num) # 属性是可以直接用类本身调用的
    
# a.func1() 这样调用是会报错:因为func1()调用时需要默认传递实例化类后的地址id参数,如果不实例化类是无法调用的
a.func2()
a.func3()

结果:

func2
<class '__main__.a'>
类属性
func1
<__main__.a object at 0x000001d820f99978>
func3
类属性

 当我们定义了一个类属性后,这个属性虽然归类所有,但类的所有实例都可以访问到。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网