在Python中,所有数据类型都可以视为对象,也可以自定义对象。其中自定义的对象就是面向对象编程中的类。在面向对象中有两个重要的概念就是类和实例。类是抽象的模板,实例是根据类创建的具体的“对象”,每个对象都有相同的方法,但各自的数据可能是不同的。
类的定义
定义类是通过关键字class实现的,class后是类名,类名通常首字母大写,紧接着后边是括号,括号内表示当前这类是继承自哪个类的,以Student类为例,定义如下:
class Student(object):
...
实例的定义是通过“类名()”的方式。xiaoming = Student()
定义了实例后我们可以给实例变量绑定属性。如给xiaoming这个实例绑定name,score属性。我们在创建实例的时如果需要可以强制将一些属性绑定。通过定义一个特殊的__init__方法,在创建实例时把name和score属性绑定上去。
定义了类后我们需要定义方法去对实现某些操作,在定义方法时,除了第一个参数是self外,其他的和普通的函数一样,要调用一个方法,只需要在通过实例直接调用,除了self不用传入,其他的参数正常传入。类的方法可以可以使用默认参数,可变参数,关键字参数和命名关键字参数,这点是和普通函数完全一样的。
# coding = uft-8
class Student(object):
'''定义一个student对象,包含name和score属性'''
def __init__(self,name,score):
self.name = name
self.score = score
def get_grade(self):
if self.score >= 90:
return 'A'
elif self.score>= 80:
return 'B'
elif self.score>= 70
return 'C'
else:
return 'D'
if __name__ == '__main__':
zhangsan = Student('Zhangsan', 59)
lisi = Student('Lisi', 78)
zhangsanlevel = Zhangsan.get_grade() #获取storm成绩的等级
print(stormlevel)
lisilevel = Lisi.get_grade() #获取sk成绩的等级
print(sklevel)
类的继承
当我们定义一个类时可以从之前已经存在的某个类去继承相关的属性以及方法。被继承的类成为父类或者基类、超类,新创建的类成为子类。
在创建子类时也可以给子类新定义一些方法。还可以对继承的父类的方法在子类中进行覆盖。当子类和父类都存在相同的方法时,子类对父类的方法进行覆盖这就体现出面向对象编程多态的特点。
#coding = utf-8
class Animal(object):
def run(self):
print('Animals can run')
class Dog(Animal):
def run(self):
print('Dog can run')
def say(self):
print('汪汪汪')
class Cat(Animal):
def run(self):
print('Cat can run')
if __name__ == '__main__':
Dog().run()
Dog().say()
Cat().run()