美文网首页
内方法和静态方法

内方法和静态方法

作者: 匿隱 | 来源:发表于2019-02-12 09:32 被阅读0次

1.对象方法:

a.怎么声明: 直接声明在类中

b.特点: 自带self参数,调用的时候不用传参,谁调用指向谁

c.怎么调用: 对象.方法()

2.类方法:

a.怎么声明: 声明函数前加@classmethod

b.特点: 自带默认参数cls; 调用的不用传参,系统会自动将调用当前函数的类传给它(cls是谁调用就指向谁, 类方法只能通过类来调用,所以cls就是当前类) 类能做的事情,cls都能做

c.怎么调用: 通过类来调用, 类.方法()

3.静态方法

a.怎么声明:声明函数前加@staticmethod

b.特点: 没有默认参数

c.怎么调用:通过类来调用, 类.方法()

4.在类中怎么选择使用哪种方法:

如果实现类中的函数的功能需要使用对象的属性, 那么这个函数就要声明对象方法。
实现函数的功能不需要对象属性的前提下,如果需要类的字段, 就声明称类方法
实现函数的功能既不需要对象属性也不需要类的字段就声明成静态方法

class Person:
    num = 61

    def __init__(self):
        self.name = '张三'

    def func4(self):
        print('%s对应的对象' % self.name)
        # print('人类的数量:%d亿' % Person.num)

    @staticmethod
    def func3():
        print(Person.num)
        print('我是静态方法!')

    @classmethod
    def func2(cls):
        print(cls.num)
        print('我是类方法2')

    @classmethod
    def func1(cls):
        # 类能做的,cls都能做
        p1 = cls()    # 用cls来创建对象
        print(p1)

        cls.num = 100  # 用cls来使用类的字段

        cls.func2()   # 用cls调用类方法

        print('cls:', cls)
        print('这是一个类方法')


def main():
    print(Person)
    Person.func1()
    Person.func3()
    p1 = Person()
    p1.func4()

相关文章

  • PHP高效率写法

    尽量静态化: 静态方法和非静态方法的效率主要区别在内存: 静态方法在程序开始时生成内存,实例方法在程序运行中生成内...

  • 内方法和静态方法

    1.对象方法: a.怎么声明: 直接声明在类中 b.特点: 自带self参数,调用的时候不用传参,谁调用指向谁 c...

  • java问题日记(持续中)

    1.静态方法内不能使用非静态变量

  • 为什么从静态的方法里调用非静态的方法或变量是非法的?

    结论: 非静态的方法可以调用静态的方法,但是静态的方法不可以调用非静态的方法。 类的静态成员(变量和方法)属于类本...

  • iOS-类方法与实例方法

    搬运自 动态方法/实例方法 静态方法/类方法 静态方法和实例方法的区分 使用场景

  • 2019-01-26 tp5.1

    1.静态方法和普通方法 静态方法是指不需要实例化属于类的方法,建议使用静态方法提高效率,tp5.1中静态方法的...

  • Javascript方法小札记

    1静态方法 存储在运行内存上的静态区域,该类方法由JS体系内类所持有。 varBaseClass=newFunct...

  • Java自学-类和对象 类方法

    Java的类方法和对象方法 类方法: 又叫做静态方法 对象方法: 又叫实例方法,非静态方法 访问一个对象方法,必须...

  • JS常用的静态方法

    什么是静态方法和实例方法? 静态方法: 静态方法属于整个类所有,因此调用它不用实例化,可以直接调用------类....

  • 静态方法与非静态方法的区别

    静态方法static(类型方法)和 非静态方法(实例方法)的区别:一、调用对象、引用变量不同;二、调用方法不同;三...

网友评论

      本文标题:内方法和静态方法

      本文链接:https://www.haomeiwen.com/subject/ptszdqtx.html