内方法和静态方法

2019-02-12  本文已影响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()
上一篇 下一篇

猜你喜欢

热点阅读