欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python基础语法介绍:面向对象编程(上)

程序员文章站 2024-03-17 16:09:10
...

面向对象编程

面向对象编程,简称OOP:是一种解决软件服用的设计和编程方法。这种方法把软件系统中相似的逻辑操作、数据、状态等以类的形式描述出来,通过对象实例在软件系统中复用,从而提高软件开发效率。

类和对象

定义和关系

  • :一个事物的抽象,定义了一类事物的属性和行为。类具有继承,多态,封装等特性。
    class 类名: #类命名规则遵守“大驼峰”
    def 方法名(self [, 参数列表]):   #默认要传入一个self参数,而且第一个参数必须是self 
  • 对象:通过类创建的一个具体事物,也就是类的实例,它具有状态和行为,可以做具体的事情。
    对象变量名 = 类名()
  • 两者关系:类相当于创建对象的模板,根据类可以创建一个或者多个对象实例。

类的方法

类的构造方法

  • _ init _构造方法:用于对象创建时初始化
    • 调用时间:在对象被实例化时被程序自动调用
    • 程序不显示定义init方法,则程序默认调用一个无参init方法
    • 对象创建过程
      Python基础语法介绍:面向对象编程(上)

类的私有方法

  • 只能在类内部调用,在类的外部无法调用
  • 私有方法:在方法名前添加两个下划线,私有属性如是
  • 类内部调用私有方法要使用self.private_method()的方式调用

    class Comrade:
    #私有方法
    def __send_message(self):
        print("消息已经向上级汇报")
    
    def answer_secret(self, secret):
        if secret == "芝麻开门":
            print("接头成功!")
            self.__send_message()#调用私有方法
        else:
            print("接头失败!")
    comrade = Comrade()
    comrade.answer_secret("芝麻开门")

类的访问权限

#设置对象属性
def __init__(self, gender, variety, name):
    self.gender = gender
    self.variety = variety
    self.name = name

修改对象属性有两种形式:

  • 直接对属性值进行赋值
  • 通过方法对属性值进行修改。这是推荐方式。可以达到对数据进行封装。

类的特性一:继承和多重继承

继承
定义:在程序中,子类从父类继承,但是子类又可以提供除父类外自身独有的方法和属性。比如猫和狗都是动物,动物如果是父类的话,那么猫和狗就是动物的子类。父类通常是抽象出带有一些共性的特征和方法的类。

#父类Animal
class Animal:
    def eat():
        print("eat")
#Dog
class Dog(Animal):
    def shout()
        print("汪汪汪")
wangcai = Dog()
#调用父类的eat
wangcai.eat()
#调用自身成员方法
wangcai.shout()

继承注意事项

  • 子类的非有属性、方法,会被子类继承
  • 子类中方法的查找:先子类方法 =》后父类方法
  • 子类可以继承祖先类的非私有属性和方法
  • 在子类中调用父类的方法:ClassName.Method(self)

多重继承
定义:一个类可以从多个父类继承。
多继承的定义方式:

class AI:
    #人脸识别
    def face_recongnition(self):
        print("人脸识别")
    def data_handle(self):
        print("AI数据处理")

class BigData:
    def data_analysis(self):
        print("数据分析")
    def data_handle(self):
        print("BigData数据处理")

class Python(BigData, AI):     #多重继承
    def operation(self):
        print("自动化运维")

对于多重继承,子类调用查找同名方法的顺序:

  • 取决于小括号内继承父类从左到右的顺序查找。
  • 可以通过类的方法 _ mro _来查看查找顺序。

类的特性二:多态

  • 定义:一个抽象类有多个子类,不同的类表现出不同的形态。比如狗和猫,他们都会叫,但是叫的声音是不同的。
  • 子类对父类允许访问的方法的实现过程进行重新编写
  • 在子类中定义与父类同名的方法。子类可以根据需要,定义合适的方法实现逻辑。

综合例子: 继承和多态

class Animal:
    def __init__(self):
        print("---animal构造方法---")

    def __private_method(self):
        print("私有方法")
    def eat(self):
        print("----吃----")
    def drink(self):
        print("----喝----")
    def run(self):
        print("----跑----")

class Dog(Animal):
    def __init__(self):
        print("dog构造方法")
    #父类方法重写 
    def run(self):                     #多态
        print("摇着尾巴跑")
    def hand(self):
        Animal.run(self)              #在子类中调用父类
        print("------握手-----")

class GoldenDog(Dog):
    def guid(self):
        print("我能导航!")

转载于:https://blog.51cto.com/xqtyler/2105064