封装
封装指对通过隐藏多余的信息防止内部属性被外部访问。
要达成封装的效果,可以把属性名前面加上两个下划线,这样就变成了一个私有属性,不能通过外部访问。
class Dog:
def __init__(self, sex, age):
self.__sex = sex
self.__age = age
def greeting(self):
print("I'm a %s dog, I'm %s years old"% (self.__sex, self.__age))
这样__sex属性和__age属性就不可以通过外部调用了。
继承
面向对象的一大重要特征是继承。在python中,继承指的是继承的类直接拥有被继承类的属性。这样做可以避免大量地重写代码。被继承的类叫父类或基类,继承的类叫子类或派生类。如果定义类的时候不指定父类的话,默认继承python中的object类。
就比如我们要建立一个学生档案库,所有学生都要录入自己的姓名、班级和期中成绩。女性学生还需要录入头发的长度,而男性学生则需要录入是否抽烟。这样就可以建立一个父类“Student”,然后建立子类“Female”和“male”。
下面的例子演示了最简单的类的继承:
class Animal:
def greeting(self)
print("Hello, I'm an animal.")
class Dog(Animal):
def __init__(self, name):
self.name = name
def type(self):
print("I'm a dog.")
在这个例子中,Dog类继承了Animal类中的greeting方法,同时还拥有自己的type方法。这些方法都可以通过实例使用。
多继承
python中支持多继承,即一个子类可以有多个父类。在实际操作中,只需把多个需要继承的父类用逗号隔开就好了。
下面的例子演示了类的多继承。
class Animal:
def greeting(self):
print("Hello, I'm an animal~")
class Domestic:
def introduction(self):
print("I'm domestic, and I'm owned by a human!")
class Pet(Animal, Domestic):
def play(self):
print("Please play with me!")
在上面的例子中,Pet类继承了Animal类和Domestic类的所有方法。
多态
在父类和子类都具有某个方法的情况下,子类的方法会覆盖父类的方法。在调用时也不会调用父类的方法,而是调用子类的方法。这就是多态。