FreezeJ' Blog

python面向对象概述

2019-04-28

面向对象编程概述

对象具有以下特征:

  1. 万物皆对象
  2. 每个对象唯一
  3. 对象具有属性和行为
  4. 对象具有状态(属性的取值)
  5. 对象分为类对象和实例对象两大类

面向对象编程的步骤:

  1. 抽象出类对象
  2. 抽象出类对象的属性
  3. 抽象出类对象的方法
  4. 根基类对象创建实例对象
  5. 通过实例对象访问属性和方法

Python是动态语言,所以可以对类动态地绑定类方法,在实例对象创建之后,也可以对其动态地绑定实例方法。

# 动态绑定方法
from types import MethodType
class Animal(object):
    def __init__(self, name):
        self.name = name


def say_name(self):
    print(self.name)


dog = Animal('dog')
cat = Animal('cat')
dog.say_name = MethodType(say_name, dog)  # 动态绑定实例方法
Animal.say_name = say_name  # 动态绑定类方法
dog.say_name()
cat.say_name()

在类对象中定义方法的几种方式。

  1. 静态方法使用@staticmethod装饰,只是一个普通的函数,便于管理。

  2. 类方法使用@classmethod装饰,需要传入形参cls。

  3. 实例方法不需要使用装饰器,需要传入形参self。
# 静态方法、类方法、实例方法
class Animal(object):
    def __init__(self, name):
        self.name = name

    @staticmethod
    def say_hello():
        print('hello')

    @classmethod
    def say_hi(cls):
        print('hi')
        cls.say_hello()

    def say_name(self):
        print(self.name)
        self.say_hello()


dog = Animal('dog')
dog.say_hello()
dog.say_hi()
dog.say_name()
Tags: Python