Python类的学习
最近照着《Python编程 从入门到实战》学习Python类的过程中,遇到了一个小问题,出现Dog():takes no arguments错误,也就是Dog这个类不接收参数。
代码
class Dog():
def _init_(self,name,age):
self.name=name;
self.age=age;
但是最后出现报错:Dog():take no arguments
然后再仔细阅读书本并核对代码,原来发现是自己眼睛瞎了
书中“__init__是一个特殊的方法,每当你根据Dog类创建新实例的时,Python都会自动调用它。在这个方法中,开头和末尾都各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。”
解决方案
在init()方法前后加上==两个“_”==就解决了
原因
既然这是Python的一种约定,那么为什么要这样约定呢?
原来,在其它语言中,例如C#、C中,在创造类的成员的时候,都会用到private,public等修饰符来声明类中的成员是否私有。那么Python中是如何实现类中成员私有公有的问题呢?
Python中主要存在四种命名方式:
- object #什么都不带,公有方法
- __object__ #两个下划线,内建方法
- ==__object ==#两个下划线,全私有,只对类中成员可见,对类外不可见,包括继承的类也不可见
- ==_object ==#一个下划线,半私有,子类可以访问
在下面这篇博客中讲述的更为详细
[参考]:*[https://www.jb51.net/article/129539.htm]: