面向对象初级

本文介绍了Python中的面向对象编程,包括类的概念、实例化对象的过程,以及如何使用类创建对象和实现类的继承。通过实例和代码演示,展示了类的构造函数、属性和方法,以及如何调用父类的方法以实现多继承。
摘要由CSDN通过智能技术生成

简介

面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将对象作为程序的基本单元,将数据和操作封装在对象中。Python是一种非常适合进行面向对象编程的语言,其支持类和对象的概念,以及继承和多态等面向对象的特性。

在Python中,类(Class)是创建对象的模板或蓝图,定义了一组属性(变量)和方法(函数)。对象(Object)是类的实例,具有类定义的属性和方法。

在这一篇文章中我们将学两个新概念,一个是类,一个是实例化对象。那么大家肯定会问什么事类,什么又是实例化对象呢?我就简单的给大家介绍一下。

对类的理解和使用

类和实例化对象其实很好理解的,在这里我给大家举一个例子,我们可以把类当成一个汽车模型,我们用一个汽车模型可以生产许多个与它一样的汽车,即一个模板生成许多个实实在在的汽车,这些实实在在的汽车呢就是这个实例化对象,而类呢,就像是这个汽车模板,照着类里面的规则,我们可以写出许许多多个程序,合理的运用类会减少我们的工作量,提高我们的工作效率,减少不必要的成本和时间。

下面是一个简单的Python类的示例:

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。在类的定义中,__init__方法是一个特殊的方法,称为构造函数(也被称为初始化函数),它在创建对象时被自动调用。self参数(也可以理解为李明为什么是李明,是一种身份的证明,只有使用self参数才能把name传参进去,self可以理解为当前本身的意思,self.name也就是当前的名字)表示类的实例本身,可以在类的方法中使用来访问对象的属性和调用其他方法。

我强调一下第二段代码,也就是初始化函数,只要在这个函数下面的代码都会自动调用,不需要我们手动调用,self对象的作用域可以理解为全局的,实例化对象后就可以把实例化的参数传进来,然后自动调用传给其它有需要的函数

要创建一个Person对象并调用其方法,可以像这样编写代码:

person1 = Person("Alice", 25)  
person1.say_hello()  # 输出:Hello, my name is Alice and I am 25 years old.

在上面的代码中,我们创建了一个名为person1的Person对象,并调用了其say_hello方法。这个方法使用对象的name和age属性来输出一条问候语。第一段代码就是实例化对象,把实例化的name和age两个参数传进了类中,第二段代码就是调用类中的方法,参数是不固定的,能一直变化,但根还是那个根。

下面是给类起名的建议

在Python中,类名需要遵循以下要求:

  1. 类名应该以大写字母开头,遵循驼峰命名法(CamelCase),例如:MyClass。
  2. 类名应该具有描述性,能够清晰地表达该类的用途或功能。
  3. 类名不应与Python的保留字或内置类名冲突。
  4. 类名应该简洁明了,不要使用过于复杂的名称,以免造成混淆。
  5. 在Python中,类名是大小写敏感的,因此MyClass和myclass是两个不同的类名。

类的继承

在Python中,类的继承是通过创建一个新类并继承另一个类的属性和方法来实现的。通过继承,子类可以继承父类的属性和方法,并且可以添加或覆盖它们。

要创建一个继承自另一个类的子类,可以使用冒号(:)和父类名称来指定继承关系。例如:

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

    def speak(self):
        pass


class Dog(Animal):
    def speak(self):
        return "Woof!"

 在上面的例子中,Dog类继承自Animal类。这意味着Dog类继承了Animal类的所有属性和方法,并且可以添加或覆盖它们。在Dog类中,我们覆盖了Animal类的speak方法,使其返回字符串"Woof!"。

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

    def speak(self):
        pass


class Dog(Animal):
    def speak(self):
        super().speak()  # 调用父类的speak方法  
        return "Woof!"

在上面的例子中,我们在Dog类的speak方法中调用了父类的speak方法。通过这种方式,我们可以访问父类的属性和方法,同时也可以添加或覆盖它们。

类的多继承

在Python中,一个类可以有多个父类,这就是多继承。要实现多继承,可以在类定义时使用逗号分隔多个父类。例如:

class Parent1:
    pass


class Parent2:
    pass


class Child(Parent1, Parent2):
    pass

在上面的例子中,Child类继承自Parent1和Parent2两个父类。这意味着Child类将继承Parent1和Parent2两个父类的所有属性和方法。

当一个类继承多个父类时,可能会出现方法覆盖的情况。在这种情况下,子类的方法将覆盖所有父类中同名的方法。要调用父类的方法,可以使用super()函数来获取父类的实例,并调用相应的方法。例如:

class Parent1:
    def speak(self):
        return "Hello from Parent1"


class Parent2:
    def speak(self):
        return "Hello from Parent2"


class Child(Parent1, Parent2):
    def speak(self):
        super().speak()  # 调用父类的speak方法  
        return "Hello from Child"

在上面的例子中,Child类覆盖了Parent1和Parent2两个父类的speak方法。在Child类的speak方法中,我们首先调用了父类的speak方法,然后返回自己的字符串。这样就可以保证在子类中正确地调用父类的方法,并且可以添加或覆盖它们。

print('类名'.mro()),这个是查看类的继承顺序的代码

print(Child.__base__),查看当前类继承的第一个类

最后呢还是感谢大家的支持!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值