天天看点

Python面向对象Python面向对象

Python面向对象

1、面向对象的概念

面向对象是一种编程思维,当前的开发思维主要有两类,一类是面向过程开发,以C语言为代表;另一类就是面向对象开发,Python、java等都是面向对象的代表。面向过程是以事物运行的过程为依据,将事物运行的过程通过计算机语言实现,从而实现计算机对现实世界的模拟运行;面向过程则是对事物运行过程中的每个参与者,将其抽象为一个具体的对象,从而实现程序模拟事务的运行。

2、面向对象的要素

2.1、对象

  • 在Python中,一切皆对象。定义的类是类对象,类的实例是实例对象。

2.2、实例

  • 类的具体实现,通过实例访问类的方法。

2.3、类

  • 对现实事物的抽象,比如将人可以定义为一个类,男人也可以定义为一个类。

2.4、方法

  • 事物的动态属性在程序中的抽象体现,比如吃饭、购物、唱歌等
  • 类具有静态方法、实例方法和类方法

2.4.1、静态方法

静态方法通过实例对象和类对象都可以调用,定义时使用装饰器@staticmethod修饰。参数自定义,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法。

2.4.2、实例方法

只能通过实例对象调用,定义时第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法。

2.4.3、类方法

实例对象和类对象都可以调用类方法,定义时使用装饰器@classmethod修饰。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法。

# coding:utf-8
# Time:2022/6/28 20:57
# Author:Yang Xiaopeng
class person:
# 属性
    city = "xian"
# 类方法
    @classmethod
    def eatting(cls):
        print("吃饭", end="______eatting______")
        print(cls.city)
# 静态方法
    @staticmethod
    def shopping():
        print("购物", end="______shopping______")
        print()
# 实例方法
    def Sing(self):
        print("唱歌", end="______Sing______")
        print(self.city)
print(person.city, person.eatting()) # 通过类访问类属性及类方法 # 吃饭______eatting______xian  第二行:xian None
pr1 = person()  # 创建类对象, pr1就是person的一个实例
pr1.eatting()   # 通过实例访问类方法 # 吃饭______eatting______xian
pr1.shopping()  # 通过实例访问类的静态方法 # 购物______shopping______
pr1.Sing()      # 通过实例访问类的实例方法 # 唱歌______Sing______xian
print(pr1.city) # 通过实例访问类的属性 # xian


           
Python面向对象Python面向对象

2.5、继承

一种联结类的层次模型,并且允许和鼓励类的重用,提供一种明确表达共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),原始类称为新类的基类(父类)。可以说,继承为了重用父类代码,同时为实现多态性做准备。

# coding:utf-8
# Time:2022/6/28 20:57
# Author:Yang Xiaopeng
class person:
# 属性
    city = "xian"
# 类方法
    @classmethod
    def eatting(cls):
        print("吃饭", end="______eatting______")
        print(cls.city)
# 静态方法
    @staticmethod
    def shopping():
        print("购物", end="______shopping______")
        print()
# 实例方法
    def Sing(self):
        print("唱歌", end="______Sing______")
        print(self.city)

class student(person):
    def studying(self):
        print("学习")
        print(self.city)         # 使用父类的类属性
        print(self.eatting())    # 使用父类的类方法

xiaoming = student()

print(xiaoming.city)     # 通过子类的实例对象访问父类的属性
xiaoming.eatting()       # 通过子类的实例对象访问父类的类方法
xiaoming.Sing()          # 通过子类的实例对象访问父类的实例方法
xiaoming.shopping()      # 通过子类的实例对象访问父类的静态方法
xiaoming.studying()      # 子类的实例对象访问子类的静态方法


           

2.6、多态

2.7、封装