美文网首页
2018-07-31python学习面向对象(三)类方法与对象方

2018-07-31python学习面向对象(三)类方法与对象方

作者: 随雪而世 | 来源:发表于2018-07-31 20:49 被阅读0次

属性: 对象的属性(属性)、类的属性(类的字段)
对象属性:属于对象的,不同对象对应的值可能不一样(对象属性,通过对象来使用)
类的字段: 声明在类里面,函数外面。类的属性属于类(类的字段,通过类来使用)

方法: 对象方法(方法)、类方法、静态函数
对象方法:自带一个self参数,一般要通过对象去调用
类方法:1.使用@classmethod修饰
2.自带一个cls参数,并且这个参数不用传参,谁来调用这个方法,cls就指向谁
3.类方法要通过类来调用
静态方法:1.使用@staticmethod修饰
2.没有默认参数
3.静态方法要通过类来调用

怎么选择用对象方法、类方法、静态方法?

if 如果实现函数的功能需要使用对象的属性,就声明成对象方法;

elif 如果实现函数的功能需要使用类的字段或者调用类的方法,就声明成类方法

else 如果实现函数功能既不需要对象的属性也不需要类的字段,就声明成静态方法

class Person:
    # number是类字段
    number = 61

    def __init__(self, name='', age=0):
        # name 和 age是对象属性
        self.name = name
        self.age = age

    # eat方法是对象方法
    def eat(self, food):
        print('%s在吃%s' % (self.name, food))

    # hurt_earth就是一个类方法
    @classmethod
    def hurt_earth(cls):
        # cls指向的是调用这个方法的类,cls可以当成类来使用
        pt = cls('张三')  # 可以使用cls创建对象
        print(pt.name)

        print(cls.number)  # 可以通过cls使用类的字段

        print('人类破坏环境!!')

    # protect_earth是一个静态方法
    @staticmethod
    def protect_earth():
        pt = Person()
        print(Person.number)
        print('人类保护地球')

if __name__ == '__main__':
    # 1.类的字段要用类来使用
    print(Person.number)

    # 2.对象的属性要通过对象来使用
    p1 = Person('小明')
    print(p1.name, p1.age)

    # 3.对象方法用对象调用
    p1.eat('面条')

    p2 = Person('小红')
    p2.eat('火锅')

    # 4.类方法通过类来调用
    Person.hurt_earth()

    # 5. 静态方法通过类来调用
    Person.protect_earth()

相关文章

  • 2018-07-31python学习面向对象(三)类方法与对象方

    属性: 对象的属性(属性)、类的属性(类的字段)对象属性:属于对象的,不同对象对应的值可能不一样(对象属性,通过对...

  • 5.面向对象

    面向对象学习三条主线 》类与类的成员:属性、方法、构造器;代码块(或初始化块)、内部类 》面向对象的三个特征...

  • 面向对象_初识

    目录 面向对象编程介绍 类与对象介绍 私有属性与私有方法 面向对象编程 1. 面向对象编程介绍 面向对象编程:Ob...

  • python 10天快速教程 Day7

    本节重点 面向对象介绍 简单类与对象 魔法方法 继承、super 私有属性与私有方法 一、面向对象介绍 面向过程:...

  • 面向对象01-方法(重载)/包/修饰符

    面向对象01-方法(重载)/包/修饰符 [TOC] 1、面向对象与面向过程 2、类和对象 2.1、类和对象的的创建...

  • Java基础-面向对象

    4.面向对象 属性+方法变成一个类 Java面向对象学习三条主线:1.Java类及类的成员:属性,方法,构造器;代...

  • 第二章 类与对象

    用例子讲述了“面向过程”与“面向对象”之间的区别 面向对象包括类、方法和属性 类是对象的蓝图,一个类可以有很多对象...

  • Java面向对象笔记

    类和对象 对象的概念 什么是面向对象 类 什么是对象的属性 什么是对象的方法 类与对象的关系/与区别 什么是对象 ...

  • 面向对象编程

    面向对象编程 一、面向对象和面向过程 二、类和对象 三、内存图 四、构造方法 五、关键字 六、面向对象的三大特征 ...

  • Python-面向对象1

    复习 面向对象编程 类的声明语法 点语法与名称空间 类与对象的声明 类的初始化方法 类的方法分类 类的三大特性 封装

网友评论

      本文标题:2018-07-31python学习面向对象(三)类方法与对象方

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