国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > python3类比函数好用吗?该如何选择?

python3类比函数好用吗?该如何选择?

头像

小妮浅浅

2020-11-16 15:30:303093浏览 · 0收藏 · 0评论

python中的函数数不胜数,是我们学习python重要的模块之一。类作为python的另一个模块,与函数相比丝毫不逊色。两者平分春秋,具体选择哪个还是要看各位小伙伴们的使用。为了让大家体会两者用法的不同,小编特意找了一个例子,让大家在对比中选择更合适的用法。下面我们一起看看示例吧。


假设我们需要编写一个音乐播放器。在这个播放器中,我们有关于不同类型数据的信息,如歌曲、专辑、艺术家和播放列表。还有一些可以播放歌曲、播放专辑、播放艺术家或播放播放列表的功能。我们将每种数据存储在字典中,不同类型的数据有不同的字段名,因为每个play函数需要做不同的事情,所以我们就有四个不同的函数:

 some_song = {
    "title": "Yellow Submarine",
    "artist": the_beatles, # 指向到包含该艺术家的词典
    "album": yellow_submarine_album, # 指向包含此相册的dict的链接
    "duration": insert_time_object_here,
    "filepath": "path/to/file/on/disk"
}
 
# 其他数据类型的结构也类似
 
# 一些函数
def play_song(song):
    # 获取歌的路径
    path = song["filepath"]
    # 播放路径
    call_some_library_function(path)
 
def play_album(album):
    # 找到专辑里所有的歌曲
    # 分别调用play_song
 
def play_artist(artist):
    # 找到这位艺术家所有的专辑
    # 分别调用play_album
 
def play_playlist(playlist):
    # 找到播放列表中的所有歌曲
# 分别调用play_song

 这样写有什么不好?我们有四个非常相似的函数,每个函数都与特定类型的数据相关。你必须把它们叫做不同的东西,而不仅仅是play,你必须确保你把正确的数据传递给它们。虽然这四种不同的类型都可以“播放”,但是没有一种通用的方法可以在不知道它是什么的情况下播放任何东西。那么在OOP下,怎么实现呢:

class Song:
    def __init__(self, title, artist, album, duration, filepath):
        self.title = title
        self.artist = artist
        self.album = album
        self.duration = duration
        self.filepath = filepath
 
    def play(self):
        path = self.filepath
        call_some_library_function(path)

这样就定义了如何创建一个新的Song对象。该方法将字段值作为参数,并将它们作为对象的属性赋值。self是一个特殊参数(名称不保留;它可以被称为任何东西),它是对对象本身的引用。是一种从同一对象的其他方法内部访问属性和方法的方法。当我们从对象外部访问它们时(要使用play方法时将执行此操作),则可以使用在该范围内为对象指定的任何名称。

 那么在之前:

# some_song是上面定义的歌
play_song(some_song)
在使用class之后:
# self参数没有在这里传递;它会自动添加
some_song = Song("Yellow Submarine",
                the_beatles,
                yellow_submarine_album,
                insert_time_object_here,
                "path/to/file/on/disk"
            )
some_song.play()

为什么这样更好?如果我们有一个对象,则不必知道它是什么就可以播放,因为现在播放任何内容的语法都是相同的:anyobject.play()即对象“知道”如何使用“自己的”数据进行处理的设计思想。无需从外部检查对象是否具有某些字段并决定如何处理这些内部字段,而是调用play对象提供的方法,并在每个类内部定义该类型的对象应如何实现此功能。

以上就是类跟函数的使用对比,有的小伙伴们肯定说小编偏向于类了。其实这只是一个应用场景的选择,大家也不用纠结于这一点,选择合适的使用才是最重要的。

关注

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

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

T字裤衩珍珠卡在缝里要紧吗| 小雪奶水涨公帮忙吸| BOBO浏览器| 马配人的视频在线观看| 《朋友年轻的妈妈》中字头歌词| 来吧儿子妈妈是纯还是仿| 《炸裂吧!巨棒》免费阅读漫画| 裸吻| 可以进入任何网站的浏览器| 深田咏美在线| 蜜桃免费观看电视剧高清完整版| 喜爱夜蒲在线观看| 蜜桃成熟了免费观看完整版电视剧| 大肉大捧一进一出视频的注意事项 | 周未同床 电影| 女性左腿又开腿肚子视频大全 | 120分钟做爰A片免费| 教练车内含乳挺进她漫画 | 女的高潮过后第二次需要多久恢复| 丝瓜视频| 7777777亚洲和欧洲尺码表| 中文字幕在线免费看线人| 三级《出差被同房》| 大茄子| 女人尝试到更粗大的心理变化| 一母四女共一婿的全诗解读| 好日子在线观看视频大全免费动漫| 《性房纵欲》在线观看| 公翁挺进苏玥的小视频| 免费观看已满十八岁电视剧高清版| 白色变态蕾丝超薄开档连身袜| 《头等舱》韩国电影在线看| 《警花交换做爰》| 小岭丽奈| 《性88分钟》| 金铃铛| 《特殊的家政服务》| 轮流和两个男人一起很容易染病吗| 欧美人与人动人物2024心理学| 亚洲偷偷拍一区二区三| 欧美片《肉欲进入》