面向对象编程--类(一)

摘要:

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前面加__即可。

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章