zoukankan      html  css  js  c++  java
  • 实例,静态,类方法示例

    A:实例方法:没有@classmethod和@staticmethod标记的方法是实例方法。假设这个有n个比传参数,类型调用的时候需要给n个参数传参。而实例调用时则只能传n-1个参数,因为第一个参数被系统默认传递了实例本身;因为有这个规定,所以实例方法如果没有参数,则实例是无法调用的,但类型可以调用.
    B:类方法:也叫类型方法,用@classmethod做标记的方法.假设其有n个必传参数,如果是类调用,则需要传n-1个参数,第一个参数同样是内定的类型本身。如果是实例调用,则需要传n个参数。类方法要让类型能调用,当然也需要至少一个参数.
    C:静态方法:@staticmethod标记的方法。类和实例都可以调用。无内定的参数问题,方法有多少参数就必须传递多少参数。
    当然,这里的参数忽略了缺省的参数

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # @Time    : 2018/6/12 14:13
    # @File    : test_demo11.py


    class A:
        def __init__(self, x=0):
            self.x = x

        # 类实例方法
        def foo(self, y=1):
            print(self.x, y)

        @classmethod
        def class_foo(cls, x=1, y=1):
            return cls(x)

        @staticmethod
        def static_foo(x=2):
            return A(x)


    a = A()
    print('a.x------->', a.x)
    a.foo()
    # A.foo()  # 错误,不能这么调用
    print()
    b = a.class_foo()
    print(b.x)
    b1 = A.class_foo()
    print(b1.x)
    print()

    c = a.static_foo()
    print(c.x)
    c1 = A.static_foo()
    print(c1.x)

  • 相关阅读:
    业余无线电A类考试准备笔记
    关于互联网技术基层绩效管理的一些思考
    适合产品经理的十本书 From 俞军
    从敏捷开发到微服务,maybe再到中台
    Golang内存模型
    CSS中的那点事儿(一)--- CSS中的单位2
    CSS中的那点事儿(一)--- CSS中的单位1
    design.js
    model.js
    云技术相关的概念
  • 原文地址:https://www.cnblogs.com/fmgao-technology/p/9173202.html
Copyright © 2011-2022 走看看