Python 板


LINE

也许有点和你原本提的方向不符合,不过凌晨醒来睡不着= =,个人浅见和大家分享。 我自己是觉得Python是一个环绕资料来设计的物件导向语言,而且这样的OOP和Java的OOP 有相当的差异。例如说,几乎不会看到Python class会有getter/setter。物件基本上是 透明的,大部分情况所有内部的资料都可以从外面读取。 这样的情况下,会有两种设计方向: 1. 既然都是public members,class不需要有太多函式,用外部function来操作物件。 2. 让上层物件呼叫子物件的member functions。一个class的member functions代表其 对子物件的所有操作。 Python的答案比我接触过的语言都更偏向2。事实上,我觉得第一种情况Python内建的 list、dict、set还有一堆一起组合利用的内建函数(除了常见的sum、len、zip,还有一堆 在itertools和functools里)就在做这件事。使用者大部分的时候都在设计怎麽操作储存 1.的物件。如果你有看过开源Python library的话,你会发现最核心的code通常都是class (设计物件来操作资料),只有helper functions和最外层的API会是function。 针对第一种情况,官方文件有个页面叫Python Data Model(很硬,不建议直接看)就在讲 怎麽透过定义特殊的member functions来设计好用的class。这里的『好用』指的是可以用 Pythonic的方式来操作,例如可以定义obj[1:2, :]或reversed(obj)是什麽意思这样。 回到你的问题,原本的两个例子我想都是合理、看情况使用的用法。但你提到当程式越来 越复杂很难处理,我觉得症结点也许是没有正确设计class来代表、储存想要处理的资料, 而这是Python常被忽略(因为语法太简单了好像随便写写都可以)却又很重要的特色之一 ,而且我发现版上很少有这样的讨论。 不小心打太多了,希望有高手来指导一下scalable python project的开发经验。 最後放个最近看到的小型server框架Flask的source code当作例子,我想只要打开每个档 案瞄一眼就了解我的意思了。 https://github.com/pallets/flask/tree/master/flask --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.44.249.54
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1522704161.A.F8E.html
1F:推 Sunal: 我觉得有些名词应该要定义一下比较好,另外getter setter用 04/03 06:47
2F:→ Sunal: 的可多了吧 04/03 06:47
3F:推 aszx4510: 上次在版上有看到一篇文 详细说明setter getter 04/03 12:25
4F:→ aszx4510: #1QIcP7lk (Python) setter getter 是很常用的东西 04/03 12:26
5F:→ aszx4510: Python专门创一个decorator语法支援这个功能 04/03 12:27
property我用的也多,但我认为这跟Java的本质不太一样。property我自己是认为是一种 『延伸attribute』,就是说通常不会写一个property来对应一个private变数(Again, Python里class是透明的)。这是针对getter的情况。另外我真的很少看到setter,大家在 实战中真的常常用到!!? ※ 编辑: ThxThx (114.44.249.54), 04/03/2018 13:52:41
6F:推 wallrose: 感谢回文 很有帮助 04/03 15:41
7F:→ s860134: 最早有 set get ,property 後来加入 04/03 19:38
8F:→ s860134: 老实说我不太懂这和 物件导向有啥关系 04/03 19:39
9F:→ s860134: 你一直强调 public 这也和 oo没啥关系 04/03 19:42
10F:推 Sunal: 其实虽然是没有真正的private 但也不代表一定要直接存取它 04/03 21:12
11F:→ s860134: 你不希望使用你 module 的成员就用 _ 前坠就好 04/04 02:12
12F:→ s860134: 真正实现了 privte/protect/public 说真的没啥意义 04/04 02:12







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP