面向对象的程序设计与python生态

1. OOP核心

        面向对象编程(Object-Oriented Programming,简称OOP)是一种常用的编程范式,旨在通过将程序划分为对象来提高代码的可重用性和可维护性。OOP的核心思想是将数据和操作数据的方法封装到一个对象中,从而使得程序更加模块化和易于理解。

OOP的核心概念:

封装:封装指的是将数据和方法封装到一个对象中,使其成为一个独立的实体

继承:继承允许一个对象继承另一个对象的属性和方法,从而实现代码的重用

多态:多态允许不同的对象对同一方法做出不同的响应,增加了代码的灵活性和可扩展性

2. OOP的基础——类与对象

2.1 类

2.1.1创建

        在Python中,可以使用class关键字来创建一个类。类是一个对象的蓝图,它定义了该对象的属性和方法。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")


        在上面的例子中,我们创建了一个名为Person的类。该类有两个属性:name和age。它还有一个方法say_hello,用于打印出个人信息。

2.1.2 类属性

2.2 对象

2.2.1 class对象

        类对象支持两种操作:属性引用和实例化。

属性引用:一般的形式为(类名.属性)。通过这种方式可以引用Class类中的有效属性。

实例化:将类视为一个不带有返回值的函数,将其赋予一个新的参数。

例:

class Person:
    name = "John"

person = Person()

print(Person.name)  # 输出: John
print(person.name)  # 输出: John

2.2.2 实例对象

       通俗而言,类实例化形成的对象被称为实例对象。

       对于实例对象而言,可以理解的操作只有属性引用。其中属性分为两种:数据属性,方法。通过实例对象,我们可以在类的外部调用类中的属性进行运算。

class Person:
    name = "John"

    def age():
        print age

person = Person()

person.name  #数据属性
person.age() #方法

2.2.3 方法对象

        一般而言,类在实例化后类方法就会与实例化对象绑定,可以通过赋值的方式将类方法绑定给其他的对象

class Person:
    name = "John"
    def age():


person = Person()

student_age = person.age() #方法对象

#student_age使用时相当于person类中的age方法

2.2.4 类和实例变量

        一般来说,实例变量用于每个实例的唯一数据,而类变量用于类的所有实例共享的属性和方法:

class Dog:

    kind = 'canine'         # class variable shared by all instances

    def __init__(self, name):
        self.name = name    # instance variable unique to each instance

>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.kind                  # shared by all dogs
'canine'
>>> e.kind                  # shared by all dogs
'canine'
>>> d.name                  # unique to d
'Fido'
>>> e.name                  # unique to e
'Buddy'

在上述例子中,Dog的数值属性(kind)由d、e共享,而通过实例化输入的属性(Fido、Buddy)则为私有,对于d和e是唯一确定的。

注:__init__是python中特殊的初始化方法。

3. 继承

       在python的继承中,我们将类分为两种,一种被称之为子类,另一种被称之为父类(基类)。子类继承了父类的所有属性和方法,并且可以在不修改父类的情况下添加新的属性和方法。这种继承关系使得代码更加灵活和可维护。

class DerivedClassName(BaseClassName):
    <statement-1>
    .
    .
    .
    <statement-N>

        在Python中,定义一个派生类时,需要指定一个基类。基类是派生类的直接父类,派生类会继承基类的属性和方法。在定义派生类时,需要确保基类的名称在当前作用域中是可见的,否则会出现NameError。

        基类的名称可以是在当前作用域中定义的类的名称,也可以是通过其他任意表达式计算得到的。这意味着,不仅可以在当前模块中定义基类,还可以在其他模块中定义基类,并在派生类所在的模块中使用该基类。

class DerivedClassName(modname.BaseClassName):

Python有两个内置函数可被用于继承机制:

  • 使用 isinstance() 来检查一个实例的类型: isinstance(obj, int) 仅会在 obj.__class__ 为 int 或某个派生自 int 的类时为 True

  • 使用 issubclass() 来检查类的继承关系: issubclass(bool, int) 为 True,因为 bool 是 int 的子类。 但是,issubclass(float, int) 为 False,因为 float 不是 int 的子类。

多重继承

class DerivedClassName(BaseClassName1, BaseClassName2, BaseClassName3):
    <statement-1>
    .
    .
    .
    <statement-N>

对于多数目的来说,在最简单的情况下,你可以认为搜索从父类所继承属性的操作是深度优先、从左到右的,当层次结构存在重叠时不会在同一个类中搜索两次。 因此,如果某个属性在 DerivedClassName 中找不到,就会在 Base1 中搜索它,然后(递归地)在 Base1 的基类中搜索,如果在那里也找不到,就将在 Base2 中搜索,依此类推。 

4. 私有变量

那种仅限从一个对象内部访问的“私有”实例变量在 Python 中并不存在。 但是,大多数 Python 代码都遵循这样一个约定:带有一个下划线的名称 (例如 _spam) 应该被当作是 API 的非公有部分 (无论它是函数、方法或是数据成员)。 这应当被视为一个实现细节,可能不经通知即加以改变。

例:

class MyClass:
    def __init__(self):
        self.__private_var = 0  # 私有变量

    def get_private_var(self):
        return self.__private_var

    def set_private_var(self, value):
        self.__private_var = value

obj = MyClass()
print(obj.get_private_var())  # 输出: 0
obj.set_private_var(10)
print(obj.get_private_var())  # 输出: 10
print(obj.__private_var)  # 报错,无法直接访问私有变量

5. Python生态

Python生态是指与Python相关的一系列软件包、库、工具和框架的集合,用于支持Python编程语言的开发和应用。Python生态包括但不限于以下内容:

  1. Python标准库:Python自带的一组基础库,提供了丰富的功能和工具,如文件操作、网络通信、数据处理等。

  2. 第三方库:由Python社区开发的各种功能强大、易用的库,如NumPy、Pandas、Matplotlib、TensorFlow等,用于科学计算、数据分析、机器学习等领域。

  3. 开发工具:包括集成开发环境(IDE)如PyCharm、Spyder、Jupyter Notebook等,以及编辑器、调试器、版本控制等工具,用于提高开发效率和代码质量。

  4. 框架:Python生态中的框架主要用于web开发,如Django、Flask、Tornado等,提供了快速构建、高效运行的web应用的能力。

  5. 数据库:Python生态中有多种支持Python的数据库,如MySQL、SQLite、MongoDB等,用于数据存储和管理。

  6. 扩展模块:Python生态还包括各种与其他语言交互的扩展模块,如Cython、PyQt、PyGame等,用于扩展Python的功能和性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值