python面向对象函数

  • Post category:Python

python是一种支持面向对象编程的编程语言,在面向对象编程的过程中,我们使用类、对象、继承和多态等概念构建程序。

类和对象

在python中,我们使用class关键字定义一个类,类包含成员变量和成员函数,成员变量用属性表示,成员函数用方法表示。

class Person:
    # 成员变量
    name = ''
    age = 0

    # 成员函数
    def display(self):
        print('My name is %s, I am %d years old.' % (self.name, self.age))

上面的代码定义了一个Person类,该类包含了两个成员变量name和age,和一个成员函数display。

我们可以使用类定义一个对象,对象拥有类的属性和方法,在对象中我们可以修改属性的值,也可以调用方法。

p1 = Person()
p1.name = 'Tom'
p1.age = 18
p1.display()

上面的代码创建了一个对象p1,通过直接访问对象的属性来修改属性的值,并调用对象的方法display。程序输出结果如下:

My name is Tom, I am 18 years old.

构造函数和析构函数

构造函数和析构函数是一种特殊的函数,当对象创建和销毁时,系统会自动调用它们。

构造函数通常用于初始化成员变量,如下代码:

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

    def display(self):
        print('My name is %s, I am %d years old.' % (self.name, self.age))

p1 = Person('Tom', 18)
p1.display()

上面的代码定义了一个构造函数__init__,该函数在对象创建时被调用,并用参数初始化对象的属性值。程序输出结果如下:

My name is Tom, I am 18 years old.

析构函数通常用于对象销毁时的清理工作,如下代码:

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

    def __del__(self):
        print('Person will be destroyed.')

    def display(self):
        print('My name is %s, I am %d years old.' % (self.name, self.age))

p1 = Person('Tom', 18)
p1.display()
del p1

上面的代码定义了一个析构函数__del__,该函数在对象销毁时被调用,并打印一条删除对象的消息。程序输出结果如下:

My name is Tom, I am 18 years old.
Person will be destroyed.

继承

继承是一种机制,通过它子类可以继承父类的成员变量和成员函数,并且可以在子类中添加新的成员变量和成员函数。

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

    def eat(self):
        print('I can eat!')

class Dog(Animal):
    def bark(self):
        print('I can bark!')

d1 = Dog('a dog')
d1.eat()
d1.bark()

上面的代码定义了一个Animal类和一个继承自Animal类的Dog类,这里的Dog是Animal的子类,继承了Animal的成员变量和成员函数,并在Dog类中添加了一个新的成员函数。

创建Dog类的对象后,我们可以调用父类的函数并使用自己的函数,程序输出结果如下:

I can eat!
I can bark!

多态

多态是一种机制,它允许我们用一个父类对象的引用,调用子类对象的方法。

class Shape:
    def __init__(self):
        pass

    def draw(self):
        pass

class Rectangle(Shape):
    def draw(self):
        print('Draw a rectangle.')

class Circle(Shape):
    def draw(self):
        print('Draw a circle.')

def drawshape(obj):
    obj.draw()

s1 = Shape()
r1 = Rectangle()
c1 = Circle()

drawshape(s1) # 什么都不会输出
drawshape(r1) # 输出 Draw a rectangle.
drawshape(c1) # 输出 Draw a circle.

上面的代码定义了一个Shape基类和两个继承自Shape类的子类Rectangle和Circle,它们分别重写了父类的draw方法。

然后定义了一个函数drawshape来调用对象的draw方法,这里我们可以传递Shape、Rectangle和Circle的对象给drawshape函数,并且程序会调用相应的重写方法。

程序输出结果如下:


Draw a rectangle.
Draw a circle.

这就是python面向对象函数的完整攻略,希望对你有所帮助。