美文网首页
Python 面向对象编程

Python 面向对象编程

作者: E_H_I_P | 来源:发表于2017-12-08 11:34 被阅读0次

面向对象编程——Object Oriented Programming(OOP)

OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
抽象类实体对象,类不能对数据成员进行赋值。【Class 是一种抽象概念,而实例( Instance)则是一个个具体的 Student】

知识点:数据封装,访问控制,继承,多态。

  • 类可以起到模板的作用

数据封装:数据和逻辑被“封装”起来了,调用很容易,而不用知道内部实现的细节

  • 封装数据的函数称为类的方法。
  • 类是创建实例的模板,而实例则是一个一个具体的对象,各个实例拥有的数据都互相独立,互不影响;方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据;通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节。

访问控制:可以对参数做检查,避免传入无效的参数。

class Student(object):
    ...
    def set_score(self, score):
        if 0 <= score <= 100:
            self.__score = score
        else:
            raise ValueError('bad score')

继承:

# -*- coding: utf-8 -*-
# 继承就是可以起到功能扩展的功能,父类可以创建通用方法,子类可以调用,也可以重新写自己的方法
# 当子类和父类存在相同的方法时,子类的方法会覆盖父类的方法。
class Animal(object):
    def run(self):
        print("Animal is running on the road!...")
        
class Dog(Animal):
    def run(self):
        print("Dog is running!")
class Cat(Animal):
    pass

dog = Dog()
dog.run()
cat = Cat()
cat.run()
print(isinstance(a,list))
print(isinstance(b,Animal))
print(isinstance(c,Dog))
print(isinstance(c,Animal))#子类一定属于其父类,反之则不行

多态:调用方只管调用,不管细节

  • 定义一个class的时候实际上就定义了一种数据类型。
  • 继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写;有了继承,才能有多态。在调用类实例方法的时候,尽量把变量视作父类类型,这样,所有子类类型都可以正常被接收。

相关文章

网友评论

      本文标题:Python 面向对象编程

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