初识面向对象

一、面向对象与面向过程

1.面向过程

  • 特点:一切以事物的流程为核心
  • 优点:负责的问题流程化,编写相对简单
  • 缺点:可扩展性差

2.面向对象

  • 特点:一切以对象为中心
  • 优点:可扩展性强
  • 缺点:编程的复杂度高于面向过程

二、类与对象

1.类

  • 类是对事物的总结,抽象的概念,类用来描述对象
  • __init__():称为初始化方法,对对象进行初始化操作,创建对象的时候自动调用这个方法

2.对象

  • 对象是类的实例化的结果
  • 对象能执行哪些方法,都由类来决定,类中定义了什么,对象就拥有什么
class User(object):
    def __init__(self, username, password):
        self.username = username
        self.password = password

    def login(self, uname, pwd):
        if self.username == uname and self.password == pwd:
            return True
        else:
            return False


u1 = User("尝试了就好", "123")
ret = u1.login(input("username:").strip(), input("password:").strip())
print(ret)

3. 创建对象

xxx = 类名()

  • 先自动执行__new__()来开辟内存,此时新开辟出来的内存区域是空的
  • 再自动调用__init__()来完成对象的初始化工作

三、面向对象三大特征

1.封装

  • 在面向对象思想中,是把一些看似无关紧要的内容组合到一起统一进行存储和使用。面向对象中表现为对属性和方法进行封装

2.继承

  • 子类可以自动拥有父类中除了私有属性外的其他所有内容
  • 一个类可以同时继承多个父类
class Animal(object):

    def run(self):
        print("----run----")


class Cat(Animal):
    pass

cat = Cat()
cat.run()  # ----run----

3.多态

  • 同一个对象,多种形态
class Animal(object):
    def run(self):
        print("Animal is running...")


class Dog(Animal):
    def run(self):
        print("Dog is running...")


class Cat(Animal):
    def run(self):
        print("Cat is running...")


class Observer():
    def observe(self, animal):
        animal.run()


dg = Dog()
ct = Cat()

ob = Observer()
ob.observe(dg)
ob.observe(ct)

结果:
Dog is running...
Cat is running...
posted @ 2018-11-07 16:31  Ethan_Y  阅读(254)  评论(0编辑  收藏  举报