# 这是学习廖雪峰老师python教程的学习笔记
1、概览
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
1.1、创建类和实例
通过class关键字定义类
class Student(object): pass
class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。
创建实例是通过类名+()实现的
>>> bart = Student()
>>> bart<__main__.Student object at 0x10a67a590> # 变量bart指向的就是一个Student的实例,后面的0x10a67a590是内存地址
>>> Student<class '__main__.Student'>
可以自由地给一个实例变量绑定属性,比如,给实例bart绑定一个name属性:
>>> bart.name = 'Bart Simpson'>>> bart.name'Bart Simpson'
__init__ 方法 定义 instance 的初始参数
class Student(object):
def __init__(self, name, score): # 第一个参数永远是实例变量self,调用时会自动传递
self.name = name self.score = score
数据封装
可在Student类的内部定义访问数据的函数,把“数据”给封装起来。
这些封装数据的函数是和Student类本身是关联起来的,我们称之为类的方法
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))
instance 可以直接调用类的方法
>>> bart.print_score()
Bart Simpson: 59
2、总结
类是创建实例的模板,而实例则是一个一个具体的对象,各个实例拥有的数据都互相独立,互不影响;
方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据;
通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节。
和静态语言不同,Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同。(比如 bart.age=8,就给bart多加了一个 age 变量/属性)