zoukankan      html  css  js  c++  java
  • Python 类方法、实例方法、静态方法的使用与及实例

    类方法

          使用装饰器@classmethod 第一个参数必须是当前类对象,该参数名一般约定为“cls” (可修改但不建议)通过他来传递类的属性和方法(不能传实例的属性和方法)

    调用:实例对象和类对象多可以调用

    实例方法

         第一个参数必须是实例对象,该参数名要为“self”通过他来传递实例的属性和方法(可传递类的属性和方法)

    调用:实例对象调用

    静态方法

        普通函数就位于类定义的命名空间中,它不会对任何实例类型进行操作,需要使用装饰器@staticmethod定义静态方法

     调用:类对象和实例都可以调用类方法

    通过实例了解

    class Book(object):
        # 类属性
        age = 23
        def __init__(self,title,name='a'):
            self.title = title
            self.name = name
        #类方法
        @classmethod
        def create(cls,title,x):
            book = cls(title=title,name=x)
            return book
        # 静态方法
        @staticmethod
        def cx(x):
            return x
        def add(self):
            print(self.title,self.name)
        def lei(self):
            # 实例访问类变量
            print(self.__class__.age)
        @classmethod
        def lei2(cls):
            # 类方法访问类变量
            print(cls.age)
    
    # 实例化对象
    book = Book("")
    book.add()   # 腾 a
    # 改变实例属性
    book.title="翁婿"
    book.add()   #翁婿 a
    book.lei2()  #23
    print(Book.age) #23
    #修改类属性
    Book.age =55
    print(Book.age)
    # 类调用静态方法
    print(Book.cx(3))
    # 实例调用静态方法
    print(book.cx(4))
  • 相关阅读:
    Sum Root to Leaf Numbers 解答
    459. Repeated Substring Pattern
    71. Simplify Path
    89. Gray Code
    73. Set Matrix Zeroes
    297. Serialize and Deserialize Binary Tree
    449. Serialize and Deserialize BST
    451. Sort Characters By Frequency
    165. Compare Version Numbers
    447. Number of Boomerangs
  • 原文地址:https://www.cnblogs.com/toby-yu/p/12357445.html
Copyright © 2011-2022 走看看