博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python为什么不隐式实现self
阅读量:5287 次
发布时间:2019-06-14

本文共 1574 字,大约阅读时间需要 5 分钟。

Python为什么不隐式实现self

Python中类的方法都需要显式的传入一个self占位参数,这让写过C#,Java,PHP,Javascript的我很是不习惯,但是Python这么吊,肯定是有他的道理的。于是我做以下的假设来看看Python这么设计是为了解决什么问题:

就拿这个说事儿吧

class News(object):    """docstring for News"""    def __init__(self, content,**arg):        super(News, self).__init__()        self.contnet=content        self.arg = arg    def print_conent(self):        print('News Detail:',self.content)

假设不需要显示传入self,而是隐式的实现它,我们可以干哈呢?

  1. 这个好像没什么问题
    python news =News() news.print_conent()
  2. 但是这个会打出什么鬼呢,俺的对象呢?
    python News.print_conent()

Python是个动态语言,而且没有访问限制符这说法,你想要啥都能拿到,为了有Python可以玩儿,而且不至于被你玩儿坏,总是要牺牲点什么的。

还有一个原因,引用Python作者Tim Peters的设计原则的第二条:

快去翻译一下,印象深刻, :)

The Zen of Python, by Tim Peters

Beautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.Readability counts.Special cases aren't special enough to break the rules.Although practicality beats purity.Errors should never pass silently.Unless explicitly silenced.In the face of ambiguity, refuse the temptation to guess.There should be one-- and preferably only one --obvious way to do it.Although that way may not be obvious at first unless you're Dutch.Now is better than never.Although never is often better than *right* now.If the implementation is hard to explain, it's a bad idea.If the implementation is easy to explain, it may be a good idea.Namespaces are one honking great idea -- let's do more of those!

Note: 如下的命令可以显示上面的信息

>python>import this

转载于:https://www.cnblogs.com/wancy86/p/python_self.html

你可能感兴趣的文章
数组分割问题求两个子数组的和差值的小
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
Linux编程简介——gcc
查看>>
2019年春季学期第四周作业
查看>>
axure学习点
查看>>
WPF文本框只允许输入数字[转]
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
查看>>
0925 韩顺平java视频
查看>>
iOS-程序启动原理和UIApplication
查看>>
mysql 8.0 zip包安装
查看>>
awk 统计
查看>>
模板设计模式的应用
查看>>
方维分享系统二次开发, 给评论、主题、回复、活动 加审核的功能
查看>>
Matlab parfor-loop并行运算
查看>>
2012-01-12 16:01 hibernate注解以及简单实例
查看>>