面向对象最重要的知识点是类和实例,类是抽象的模版,而实例是根据抽象的类创造出的对象,每个类的方法可以一样,但是传入的数据不相同。

类与实例

在python中定义类使用class关键字,例如

class student(object):
     pass

object继承所有类,在class中,所有的函数定义规则如下:

def __init__(self,name,score):
    self.name = name
    self.score = score

self表示创建实例本身,因此在__int__方法内部,可以把各个属性绑定到self,self只想创建的实例本身。和普通函数相比,类中的函数定义有一点不同,就是第一个参数永远都是实例变量self,并且调用时,无需传递此参数。

数据封装

面向对象编程的一个重要特点是数据封装在上边的student中,每个实例拥有各自的name,score数据,可以通过函数访问这些数据,例如打印学生成绩:

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

无需从外部访问此函数,可以直接在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))

类是创建实例的模版,而实例则是以一个具体的对象,各个实例拥有的数据都互相独立,互不影响,方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问市里的数据,通过在实例上调用方法,我们就直接操作了对象内部的数据,无需知道方法内部实现细节,和静态语言不同,python允许对实例变量绑定任何数据,对于两个实例变量,虽然他们是同一个类的不同实例,但拥有的变量名称都可能不同。

访问限制

赞 赏
真诚赞赏 手有余香
用微信请lyton喝杯咖啡?

微信支付

用支付宝请lyton喝杯咖啡?

支付宝