面向对象编程--类(一)
重庆大学_刘华财 人气:0摘要:
1.类
2.封装
3.访问限制
正文:
为了更容易记住类的规则,结合自己的理解对类进行总结
一.类和实例化
类:抽象的模板
class Student(): pass print(Student) ''' <class '__main__.Student'> '''
实例化:根据类创造出的具体对象
bart = Student() print(bart) ''' <__main__.Student object at 0x0000027BB7B3C470> '''
这两段代码如同我们的填写的表格,这里创建了一个空白的表格(空Student类),再把这个表格给一个人填写(只是接过表格,还没开始填写)。
实例化就是这个人接过空白表格,需要填写内容。
bart.name = 'Bart Simpson' print(bart.name) ##Bart Simpson
这个人在空白的表格上写下了 名字(name和Bart Simpson都是手写体),但是手写体看着并不是很规则,做一点改进将name机打,simpson个人的名字手写。name作为表格的基本信息属性,直接定义在类的内部,而不是实例化的时候才填写。
#基本属性类--实例机打+手写 class Student(): def __init__(self,name,score): self.name = name self.score = score
上段代码通过 def __init__(self)将基本的属性放在类里面。相当于Student这个表格不再是空白表格了,而是具有一些基本信息的表格,只需要人在对应位置写下自己的名字和成绩即可
实例化:将这个表格给一个人让他填写指定信息。而类中定义属性方法中有一个self参数,这个参数就是实例化本身(这里可以理解成:bart)
bart = Student('Bart Simpson',59) print(bart.name,bart.score) ##Bart Simpson 59
以上过程展示了类和实例化的简单实现过程。这也是属性的封装过程
二.封装
方法的封装
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
实例化:创建实例化需要传递name、score。self是形参,实参则是实例化bart。实例化可以直接调用类中的函数。bart.print_score()
三.访问权限
1.实例化修改类的内部属性
class Student(): 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 ##修改有效 bart.score = 99 bart.print_score() ##Bart Simpson:99
通过实例化bart.score=99修改类的内部属性,修改之后再实例化调用,bart.print_score()结果是修改后的99。这说明,当前代码结构是可以通过外部实例化修改类内部属性的
2.如何才能不被修改呢?
udent(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 ##修改有效 bart.score = 99 bart.print_score() ##Bart Simpson:59
在定义属性的时候,将self.name修改成self.__name;self.score = score 修改为self.__score = score;也就是说在变量name、score前面加__即可。
加载全部内容