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,而是隐式的实现它,我们可以干哈呢?

这个好像没什么问题news =News()

news.print_conent()

但是这个会打出什么鬼呢,俺的对象呢?News.print_conent()

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

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

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

python隐式调用方法_Python为什么不隐式实现self相关推荐

  1. python中的请求方法_Python爬虫HTPP请求方法有哪些

    HTTP请求方法 GET:请求指定的页面信息,并返回实体主体. HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 POST:向指定资源提交数据进行处理请求(例如提交表单或者上 ...

  2. python库的安装方法_Python库的安装方法

    Python库的安装方法 Python的解释器CPython是开源的,我们可以下载查看其源代码,同时,Python语言的各种库也都是开源的.利用Python语言编程,可用的库有很多,在Python官方 ...

  3. python相对路径import 方法_Python 从相对路径下import的方法

    例如我们有如下结构的文件: pkg/ __init__.py libs/ some_lib.py __init__.py components/ code.py __init__.py 如果我们想要在 ...

  4. python文件操作的方法_python文件操作的方法介绍

    文件操作 1.open()函数 open()函数主要用于文件处理,一般分为下面3个过程:1.打开文件 2.操作文件 3.关闭文件 常见的格式示例:f = open('note.txt','r') f. ...

  5. python打乱列表的方法_python打乱列表

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 随机打乱列表中的元素自己写函数用于随机打乱列表中的元素方案一:交换法随机选取原列 ...

  6. python描述符魔术方法_Python类型转换的魔术方法详解

    本文讨论python中将某个复杂对象转换为简单对象或数据类型的常用魔术放啊,这些在编程中是十分有用的. 1.__str__方法. 在讲解本方法前我们先打开一个jupyter notebook,随意创建 ...

  7. python创建虚拟环境的方法_Python创建virtualenv(虚拟环境)方法

    本文目录 一 前言 二 通过virtualenv软件创建 三 在pycharm下创建 新建项目 四 已有项目使用和创建虚拟环境 五 参数说明 一 前言 需求: --公司之有一台服务器 -目前运行这一个 ...

  8. python find的使用方法_Python中的rfind()方法使用详解

    Python中的rfind()方法使用详解 rfind()方法返回所在子str 被找到的最后一个索引,或者-1,如果没有这样的索引不存在,可选择限制搜索字符串string[beg:end]. 语法 以 ...

  9. python计算图形面积的方法_python计算不规则图形面积算法

    https://www.xin3721.com/eschool/pythonxin3721/ 介绍:大三上做一个医学影像识别的项目,医生在原图上用红笔标记病灶点,通过记录红色的坐标位置可以得到病灶点的 ...

最新文章

  1. 用jquery校验radio单选按钮(原创)
  2. 系统测试集成测试单元测试_等待正确的时刻–集成测试
  3. 【Java】关键词梳理
  4. 从0开始架构一个IOS程序—— 05— NavigationBar 搭建首页面
  5. geoserver rest 导入shape文件错误
  6. python os.forkos.wait
  7. @SuppressWarnings注解的详解
  8. 关于VisualStudio性能分析数据中的独占样本数和非独占样本数的意义
  9. Go基础-Go中的Println和Print和Printf之间的区别
  10. 帆软决策报表JS实现点击超链切换TAB页
  11. 系统动力学软件vensim学习之一阶负反馈
  12. 银河麒麟linux找不到网卡,银河麒麟(Ubuntu)无法上网问题的解决方法
  13. JAVA毕业设计共享汽车管理系统计算机源码+lw文档+系统+调试部署+数据库
  14. 股市实时行情分发工具-拿来就用
  15. domino获取邮件中的密送的收件人-字段:Recipients
  16. 鸿蒙华为商标,华为已注册鸿蒙商标 鸿蒙有什么含义?华为注册的商标盘点
  17. Visual Studio 2017正式版各版本比较:企业版最强大
  18. 漂亮的梦幻图,可用来做背景图(60张左右)
  19. 知星社:学会了什么?
  20. 改变别人的思想的艺术

热门文章

  1. Pytorch yolov3 多GPU 训练
  2. 14. Popen类
  3. sublimelinter校验php,代码校验工具 SublimeLinter 的安装与使用
  4. linux系统信号控制进程的重启,Linux系统中的信号(进程间通信)及其含义
  5. 解决 macOS 上 iterm2 使用 rz/sz 卡死的问题
  6. Nginx之简介与安装(一)
  7. JsonCpp的简单使用方法
  8. 关于LDD3 setconsole.c Alesssandro Rubini 的邮件回复
  9. c语言用数组实现循环移位,如何将一个数组的元素循环左移?
  10. python int函数详解_Python内置函数OCT详解