Python面向对象

来自CloudWiki
跳转至: 导航搜索

面向对象概念

一个典型的python类:

class Student(object):
    def __init__(self, name, score):
        self.name = name
        self.score = score

    def print_score(self):
        print('%s: %s' % (self.name, self.score))


std1 = Student('小明', 98)
std2 = Student('小红', 81)
std1.print_score()
std2.print_score()

__init__:初始化方法(注意这里有两个下划线)

__init__方法的第一个参数永远是self,表示创建的对象本身。这个参数使用时不用传递。

类的继承

 
class Person(object):
    def __init__(self, name):
        self.name = name  # 名字

    def talk(self):  # 父类的公有方法
        print('%s 正在讲话....' % (self.name))


class Athletes(Person):
    def swimming(self):
        print('%s 正在游泳....' % (self.name))


per = Athletes('小明')
per.swimming()  #输出: 小明 正在游泳....
per.talk()  #输出: 小明 正在讲话....

Mixin多重继承

Mixin可以临时将多个类的某些功能组装在一起。

使用Mixin 可以在不修改任何源代码的情况下,对已有类进行扩展。

class Vehicle(object):  #定义车辆类
    def __init__(self, id):
        self.id = id

    def drive(self):
        print('牌号%s汽车正在行驶中...' % (self.id))


class ShowMixin(object):  #定义车辆作为演示道具的功能
    def show(self):
        print('牌号%s汽车正在表演中...' % (self.id))


class ShowVehicle(Vehicle, ShowMixin):
    pass


car = ShowVehicle('9999')
car.show()  #输出: 牌号9999汽车正在表演中...
car.drive()  #输出: 牌号9999汽车正在行驶中...

第二个类起名为ShowMixin,表示这是一个Mixin类,是作为功能添加到子类中的。