韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > Python常见问题 > python是如何实现封装的

python是如何实现封装的

封装

头像

silencement

2019-08-31 14:17:203315浏览 · 0收藏 · 0评论

封装的目的是,?;ひ剑巡幌肴帽鹑酥赖亩鞣庾捌鹄?。下面通过例子来理解封装

定义了Student类及实例化,每个实例都拥有各自的name和score。现在若需要打印一个学生的成绩,可定义函数 print_score(),该函数为类外的函数。

class Student(object):
    def __init__(self, name, score):
        self.name = name
        self.score = score

May = Student("May",90)                      # 须要提供两个属性
Peter = Student("Peter",85)
print(May.name, May.score)
print(Peter.name, Peter.score)

def print_score(Student):                    # 外部函数print_score(Student)
    # print("%s's score is: %d" %(Student.name,Student.score))             # 普通 print 写法
    print("{0}'s score is: {1}".format(Student.name,Student.score))        # 建议使用 Python 2.7 + .format优化写法
print_score(May)    
print_score(Peter)

既然Student实例本身就拥有这些数据,要访问这些数据,就没有必要从外面的函数去访问,我们可以直接在Student类的内部定义访问数据的函数。这样,就把数据给“封装”起来了。

“封装”就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体(即类);封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。

而这些封装数据的函数是和Student类本身是关联起来的,我们称之为类的方法。那如何定义类的方法呢?

就要用到对象 self 本身,参考上例,把 print_score() 函数写为类的方法(Python2.7之后的版本,推荐.format 输出写法):

class Student(object):
    def __init__(self, name, score): 
        self.name = name
        self.score = score

    def print_score(self):
        print("{self.name}'s score is: {self.score}".format(self=self))        # Python 2.7 + .format优化写法
        
May = Student("May",90)        
Peter = Student("Peter",85)

定义类的方法:除了第一个参数是self外,其他和普通函数一样。

实例调用方法:只需要在实例变量上直接调用,除了self不用传递,其他参数正常传入;注意,若类的方法仅需要self,不需要其他,调用该方法时,仅需instance_name.function_name()

这样一来,我们从外部看Student类,就只需要知道,创建实例需要给出name和score,而如何打印,都是在Student类的内部定义的,这些数据和逻辑被“封装”起来了,调用很容易,但却不用知道内部实现的细节。

封装的另一个好处是可以给Student类增加新的方法;这边的方法也可以要求传参,如新增定义compare 函数,如下:

class Student(object):
    def __init__(self, name, score): 
        self.name = name
        self.score = score

    def print_score(self):
        print("{self.name}'s score is: {self.score}".format(self=self))        # Python 2.7 + .format优化写法
        
    def compare(self,s):
        if self.score>s:
            print("better than %d" %(s))
        elif self.score==s:
            print("equal %d" %(s))
        else:
            print("lower than %d" %(s))

May = Student("May",90)        
Peter = Student("Peter",85)        

May.print_score()
Peter.print_score()

May.compare(100)
May.compare(90)
May.compare(89)
关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

电影《满足2》完整版在线观看| 《丰满的女邻居》播放| 扌击辶鬲的小说父女| 美女两个球球抖动抓球球视频 | 日产MV和欧美MV的外观对比 | 酷狗上学记| BOBO浏览器老司机模式改版特. | 小俊在雪姨身上耕耘小说免费阅读 | 疯狂精力旺盛的女婿小说免费阅读 | 妈妈让我戴上避孕套的下一句是啥 | 玛卡泡水喝能提高性功能吗| 《灭火宝贝4》| 暴躁老妈1-46集免费| 电饭煲怎么选| 《交换做爰》在线观看| 《炸裂吧!巨棒》免费阅读漫画| 《帐篷里的秘密》动漫| 亚洲第一大综合区的就业前景| 50多岁熟妇泻火原因处理方法| 芬太尼问题百度百科| 古代洞房2国语版免费观看| 《再来一次好吗》免费观看| 女生穿露胸开又裙穿搭大忌 | 一边摸上面一边敷面膜| 雨后小故事| 华丽的外出在线观看| 五姑娘影院在线观看免费版电视剧| 暴躁老阿姨CSGO技能推荐大全 | 日本双人xX00吃奶视频| 爸爸的擎天柱让我看第二集| 《性房纵欲》在线观看| 美女| 女的高潮过后第二次需要多久恢复| 《丰满的女邻居》播放| 国精产品一品二品国精HTC| 麻花星空天美MV免费观看电视剧 | 《玉尺经》| 欧美人动物PPT免费模板大全| お母さんは母のがいない怎么读| 一路向西在线| 《囚禁空姐》电影免费观看