zoukankan      html  css  js  c++  java
  • 面向对象之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 直接外部来调用
    
  • 相关阅读:
    Longest Valid Parentheses
    [转载]ios入门篇 -hello Word(1)
    EXTJS 4 动态grid
    Spring AOP JPA
    Jchart 演示
    HSQLDB JPA GeneratedValue
    Antlr 练习
    回火方程
    URL decode 解决中文目录的乱码问题
    Arduino IIC lcd1602
  • 原文地址:https://www.cnblogs.com/hongyongshang/p/6713692.html
Copyright © 2011-2022 走看看