• 面向对象之self classmethod staticmethod


    class Foo:
        """静态字段
           调用方式:类名.静态字段
           在当前类的任意位置可以被调用,
           但是注意了
                如果是静态的方法/类方法,只能是类名.静态字段
                如果是普通方法,可以用self.静态字段, 或者类名.静态字段
        """
        name1 = "gendan"
        age = 100000
        def __init__(self, name):
            """构造方法"""
            print('这是一个构造方法,在对象创建时就自动加载进内存,而且只有一次')
            self.name = name  #声明一个普通字段,调用方式只能是对象.属性来访问,每创建一个对象就会在内存中开一个空间
            self.age = "10"
            print(Foo.age)
    
        def gen_func(self):
            """ 定义普通方法,至少有一个self参数 """
            print(self.name,"普通方法ord_func")
            print('普通方法')
            # self.age = 999
            # print("----",self.age)
        @classmethod  #--->声明紧接它以def开头定义的方法,并且此方法里面后面至少第一个参数是cls
        def class_func(cls):   #调用方式是类名.方法()   Foo.class_func()
            """ 定义类方法,至少有一个cls参数 """
            print ( '类方法')
            # Foo.age="0101 类方式更改静态字段"
            print(Foo.age)
            #类方法里不允许用self方式来访问(不难想象self是一个句柄,只针对对象
        @staticmethod   #--->声明紧接它以def开头定义的方法叫静态方法
        def static_func():
            """ 定义静态方法 ,无默认参数"""
            print('静态方法')
            #静态方法里同样不允许self方式访问(理由同上)
    #创建类对象
    f =Foo("")
    f.name = "diger"
    Foo.age = 99  #允许类方式修改静态字段
    f.gen_func()
    Foo.class_func() #0101 类方式更改静态字段
    print(f.name,"直接外部来调用") #diger 直接外部来调用
    
  • 相关阅读:
    Singing Everywhere ZOJ
    CONTINUE...? ZOJ
    Doki Doki Literature Club ZOJ
    数论证明链接整理
    ACM数学(转)
    codeforce 1152C. Neko does Maths(欧几里得算法)
    八数码问题判定是否解的证明
    sql给表取别名
    win10激活方法
    HDU1121 Complete the Sequence(差分找规律)
  • 原文地址:https://www.cnblogs.com/hongyongshang/p/6713692.html
Copyright © 2020-2023  润新知