python的面向对象编程

对于python的面向对象编程来说, 一切皆对象将现实的抽象事物使用类与实力进行模拟

(1)封装

在面向对象编程中,封装是将数据(属性)和操作这些数据的方法(函数)捆绑在一起,形成一个类的过程。它隐藏了类内部的实现细节,只向外部提供必要的接口来访问和操作数据。

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

    def _get_sex(self):
        return self._sex

    def _set_sex(self, sex):
        self._sex = sex

    def __get_age(self):
        return self.__age

    def __set_age(self, age):
        self.__age = age

    def get_name(self):
        return self.name

    def set_name(self, name):
        self.name = name

    def __str__(self):
        return f"name:{self.get_name()} age:{self.__get_age()} sex:{self._get_sex()}"


p = Person("张飞", 20, "男")
print(p, p.name, p.get_name())


# print(p.__get_age(),p.__age)
class SuperPerson(Person):
    pass


sp1 = SuperPerson("赵云", 52, "男")
print(sp1, sp1._sex)

上述例子来说name是公有属性age是私有属性通过变量前两个下划线定义
sex是保护属性通过一个下划线定义
共有属性在类内类外都可以调用
私有属性只能在类内进行调用
保护属性只能在类内和子类中调用

(2)继承

继承是一种建立类之间关系的机制。通过继承,一个类(称为子类或派生类)可以继承另一个类(称为父类或基类)的属性和方法。这意味着子类可以使用父类中定义的功能,同时还可以添加自己独特的属性和方法。

继承的优势

代码复用:避免重复编写相同的代码,减少代码量。
增强代码的可维护性:如果父类中的方法需要修改,子类会自动继承这些修改。
建立清晰的类层次结构:有助于更好地组织和理解相关的类。

class Animal:
    def __init__(self, name):
        self.name = name

    def sound(self):
        print("动物发出声音")

class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)
        self.breed = breed

    def sound(self):
        print("汪汪汪")

my_dog = Dog("小白", "拉布拉多")
print(my_dog.name)
my_dog.sound()

多继承:

指的是一个子类拥有多个父类,在父类拥有相同方法时进行广度优先查找

class Moveable:
    def __init__(self, name, speed):
        self.name = name
        self.speed = speed

    def __str__(self):
        return f"名字: {self.name} 速度: {self.speed}"

    # def show_move(self):
    #     print("我是移动类")


class Speakable:
    def __init__(self, language):
        self.language = language

    def __str__(self):
        return f"语言:{self.language}"

    # def show_speak(self):
    #     print("我是说话类")


class Dog(Moveable, Speakable):
    def __init__(self, name, speed, language):
        Moveable.__init__(self, name, speed)
        Speakable.__init__(self, language)

    def __str__(self):
        return f"{Moveable.__str__(self)}{Speakable.__str__(self)}"

    def show_dog(self):
        print("我是狗类")


class Biting:
    def __init__(self, skill):
        self.skill = skill

    def __str__(self):
        return f"我会咬人"


class Japese(Dog, Biting):
    def __init__(self, name, speed, language, skill):
        Dog.__init__(self, name, speed, language)
        Biting.__init__(self, skill)

    # def __str__(self):
    #     return f"小男孩类"


r = Dog("小狗", 180, "英语")
print(r)

t = Japese("gou", 10, "日语", "咬人")
print(t)
t.show_dog()

(3)多态

多态是面向对象编程中的一个重要概念,它指的是不同的对象可以对相同的消息(方法调用)做出不同的响应。
在 Python 中,多态主要通过方法重写(Override)来实现。方法重写是指子类重新定义父类中已有的方法,从而在子类对象调用该方法时,执行的是子类中重写后的方法。

class Animal:
    def make_sound(self):
        print("动物发出声音")

class Dog(Animal):
    def make_sound(self):
        print("汪汪汪")

class Cat(Animal):
    def make_sound(self):
        print("喵喵喵")

# 定义一个函数,接受 Animal 类型的参数
def animal_sound(animal):
    animal.make_sound()

# 创建对象
dog = Dog()
cat = Cat()

# 调用函数,传递不同的对象
animal_sound(dog)
animal_sound(cat)

一、什么是面向对象编程?

面向对象编程将数据和对数据的操作封装在一个称为“对象”的单元中。对象具有属性(描述其特征的数据)和方法(对其进行操作的函数)。通过创建类来定义对象的模板,然后可以基于这些类创建多个具体的对象实例。

二、Python 中面向对象编程的关键概念

类(Class):类是对象的蓝图或模板,它定义了对象的属性和方法。
对象(Object):对象是类的实例,具有类中定义的属性和方法。
属性(Attribute):对象的特性或数据。
方法(Method):对象可以执行的操作,是定义在类中的函数。

三、Python 面向对象编程的例子与代码案例

让我们通过一些具体的例子来更好地理解面向对象编程。
定义一个 Person 类来表示人

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

    def get_name(self):
        print(f"我叫{self.name},今年{self.age}岁。")

在这个例子中,Person 是一个类,init 方法是特殊的初始化方法,用于在创建对象时设置对象的初始属性值。introduce 方法用于打印人的介绍信息。
创建 Person 类的对象并使用其方法

person1 = Person("张三", 25)
person2 = Person("李四", 30)

person1.get_name()
person2.get_name()

通过创建 Person 类的对象 person1 和 person2,并调用 introduce 方法,我们可以看到每个对象都具有自己独立的属性值,并能执行相应的操作。
再来看一个 Rectangle(矩形)类的例子

class Rectangle:
    def __init__(self, length, width):
        self.length = length
        self.width = width

    def area(self):
        return self.length * self.width

    def perimeter(self):
        return 2 * (self.length + self.width)

这个类用于计算矩形的面积和周长。

rect1 = Rectangle(5, 3)
print("矩形的面积:", rect1.area())
print("矩形的周长:", rect1.perimeter())

通过创建 Rectangle 类的对象 rect1,并调用其 area 和 perimeter 方法,我们可以方便地计算矩形的相关属性。

四、面向对象编程的优势

代码的可重用性:通过创建类,可以在不同的地方创建类的实例,重复使用相同的代码结构和逻辑。
代码的可维护性:将相关的属性和方法封装在一个类中,使得代码更易于理解和修改。
代码的可扩展性:可以轻松地在现有类的基础上创建子类,扩展其功能。
总之,Python 中的面向对象编程为我们提供了一种更高效、更有条理的编程方式,使我们能够构建复杂且易于管理的程序。希望通过上述的例子和讲解,您能对 Python 面向对象编程有更深入的理解和认识,并在实际编程中灵活运用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值