Python快速入门3:面向对象OOP(需要有编程基础)

面向对象是什么:

        面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它以对象为基础,将数据和操作封装在一起以创建可重用的代码模块。在面向对象编程中,对象是程序的基本单元,它们可以代表现实世界中的实体或概念,如人、车、动物等。面向对象编程的主要思想是将现实世界中的事物抽象为对象,并通过对象之间的交互来实现程序的功能。

面向对象编程的核心概念包括:

  1. 类与对象:类是对象的抽象,描述了具有相似属性和行为的一组对象的共同特征。对象是类的实例,它具体化了类的定义,并拥有类所描述的属性和行为。     

  2. 封装:封装是将数据和操作封装在对象内部的机制,隐藏了对象的内部细节,只对外部提供有限的接口。这样可以保护数据不受非法访问和意外修改,提高了代码的可维护性和可重用性。

  3. 继承:继承是一种机制,允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和行为,并可以在此基础上进行扩展或修改。通过继承,可以实现代码的重用和层次化的组织结构。

  4. 多态:多态是指同一个操作作用于不同的对象上时可以产生不同的行为。在面向对象编程中,多态通过方法的重写(覆盖)和方法的重载来实现。多态提高了代码的灵活性和可扩展性,使得程序更加易于理解和维护。

Python面向对象:

定义类:

        类有属性和方法,对应实体的属性和行为,类定义的语法格式:

class ClassName:
    <element_1>
    .
    .
    <element_N>
    <action_1>
    .
    .
    <action_N>

例如: 

class Person:
    age = 18
    name = "Jack"
    def speak(self):
        return f'hello I am {self.name}'
Human = Person()
print(Human.speak())
#输出:hello I am Jack

 构造方法

        类有一个名为 __init__() 的特殊方法,也叫构造方法,类实例化对象时会自动调用这个方法,self指实例化的对象。

例如:

class Person:
    def __init__(self, name, age):
        self.age = age
        self.name = name
    def speak(self):
        return f"hello I am {self.name}, I'm {self.age} years old"
Human = Person('jack',18)
#输出:hello I am jack, I'm 18 years old

继承

        子类可以继承父类的属性和方法,并且在子类中还可以改写父类的属性和方法,子类也可以定义新的方法。

例如:

class Person:
    def __init__(self, n, a):
        self.age = a
        self.name = n
    def run(self):
        return f"{self.name} is running"
    def speak(self):
        return f"hello I am {self.name}, I'm {self.age} years old"
class Student(Person):
    def __init__(self, stuId,n,a):
        Person.__init__(self,n,a)
        self.stuId = stuId
    def speak(self):
        return f"hello I am {self.name}, I'm {self.age} years old, my student id is {self.stuId}"
Human = Person('jack',18)
xiaohong = Student("20180001","小红",18)

print(xiaohong.speak())
print(xiaohong.run())
#输出如下
#hello I am 小红, I'm 18 years old, my student id is 小红
#小红 is running

私有属性与方法

        在类的属性或方法前加上__表示此属性或方法为私有属性与方法,子类无法继承和调用。

例如:

class Person:
    def __init__(self, n, a, money):
        self.age = a
        self.name = n
        self.__money = money
    def run(self):
        return f"{self.name} is running"
    def speak(self):
        return f"hello I am {self.name}, I'm {self.age} years old"
    def __spendMoney(self):
        return f"{self.name} 花了{self.__money}元"
class Student(Person):
    def __init__(self, stuId, n, a):
        Person.__init__(self, n, a, 100)
        self.stuId = stuId
    def speak(self):
        return f"hello I am {self.name}, I'm {self.age} years old, my student id is {self.stuId}"

xiaohong = Student("20180001","小红",18)
xiaohong.__spendMoney()#此句报错,无法调用

运算符重载:

         Python也可以进行运算符重载,直接调用类的专有方法就可以实现运算符重载。

例如:

class Purse:
    def __init__(self, a, b):
        self.money = a
        self.E_money = b
    def __str__(self):
        return f"{self.money},{self.E_money}"
    def __add__(self, other):
        return Purse(self.money+other.money,self.E_money + other.E_money)
Purse1 = Purse(10,20)
Purse2 = Purse(30,40)
print(Purse1 + Purse2)
#输出:40,60

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值