zoukankan      html  css  js  c++  java
  • Python高级笔记(五)--实例方法、静态方法和类方法

    1. 类属性、实例属性

    • 类属性在内存中只保存一份
    • 实例属性在每个对象中都要保持一份

    obj.__class__.country="xxx": 可以修改类属性

    2. 实例方法、静态方法和类方法

    • 实例方法:由对象调用;至少一个self参数;执行实例方法时,自动将调用该方法的对象赋值给 self;(python解释器传入:实例对象引用

    • 类方法:由类调用;至少一个cls参数;执行类方法时,自动将调用该方法的类赋值给 cls; (python解释器传入:类对象引用(类属性)

      • 第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法
      • 类对象或实例对象都可以调用。
    • 静态方法:由类调用;无默认参数;

      • 参数随意,没有“self”和“cls”参数,但是方法体 不能使用 类或实例的任何属性和方法
    • 实例对象有多个(只有实例属性是独有的,其他都不是独有的),类对象只有一个;
    class Foo(object):
        def __init__(self, name):
            self.name = name
    
        def ord_func(self):
            print("实例方法")
    
        @classmethod                           # 装饰器
        def class_func(cls):
            """定义类方法,至少有一个cls参数"""
            print('类方法')
    
        @staticmethod
        def static_func():
            """ 定义静态方法,无默认参数 """
            print("静态方法")
    
    f = Foo("中国")
    f.ord_func()

  • 相关阅读:
    异常处理
    PAT——1048. 数字加密
    PAT——1047. 编程团体赛
    PAT——1046. 划拳
    PAT——1045. 快速排序(25)
    PAT——1044. 火星数字
    PAT——1043. 输出PATest
    PAT——1042. 字符统计
    PAT——1041. 考试座位号
    PAT——1040. 有几个PAT
  • 原文地址:https://www.cnblogs.com/douzujun/p/10787921.html
Copyright © 2011-2022 走看看