python 中的 @ 符号

时间:2021-07-22
本文章向大家介绍python 中的 @ 符号,主要包括python 中的 @ 符号使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1 . 修饰函数

看装饰器这一节

https://www.cnblogs.com/xumaomao/articles/10984271.html

2. @staticmethod

相当于C++里的静态函数

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

class Student(object):
    #类属性
    name = 'fdzwdt'
    def __init__(self,name):
        #实例对象属性
        self.name = name
    
    #实例方法,只能由实例对象来调用
    def get_name_ins(self):
        return self.name
    
    #类方法,可以通过类来调用,也可以通过实例对象调用
    @classmethod
    def get_name_cls(cls):
        return cls.name
    
    #静态方法,可以通过类来调用,也可以通过实例对象调用
    #主要功能就是对__init__构造函数进行重载
    @staticmethod
    def get_name_sta(name):
        return Student(name).name
st = Student('weidt')
print('ins_name:'+st.get_name_ins())
print('cls_name:'+Student.get_name_cls())
print('sta_name:'+Student.get_name_sta('wdt'))

3. @classmethod

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

#!/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

原文地址:https://www.cnblogs.com/xumaomao/p/15046438.html