所以,面向对象的设计思想是抽象出Class,根据Class创建Instance。
1、类和实例
定义类是通过class关键字。class后紧接着是类名,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的。
类可以起到模板的作用,可以绑定属性进去,通过__init__方法,如:
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))
bart = Student('Bart Simpson',59)
>>> bart.print_score()
Bart Simpson:59
2、访问限制
如果让内部属性不被外部访问,可以把属性名称前加上两个下划线__。
如上述代码改成:self.__name = name即可。
若外部代码想要获取内部属性值,可以给类增加get方法;若想修改,可以增加set方法,可以对参数做检查。
def get_name(self):
return bart.__name
def set_name(self, name)
self.__name = name
3、继承和多态
继承可以把父类的所有功能都直接拿过来,这样就不必从零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写。
class Animal(object):
def run(self):
print('Animal is running...')
对于子类Dog:
class Dog(Animal):
def run(self):
print('Dog is running...')
函数
def run_twice(animal):
animal.run()
animal.run()
当Dog类调用此函数:
>>>run_twice(Dog())
Dog is running...
Dog is running...
不需要再修改函数。
4、获取对象信息
(1)isinstance()的使用。
dog = Dog()
>>> isinstance(dog, Dog)
True
(2)dir()的使用,dir()可以获得一个对象的所有属性和方法
5、实例属性和类属性
可在class中定义属性,这种属性是类属性,归类所有。