Python中的对象和动态性 [菜鸟的理解,高手莫入]
当我们谈到python时常常会说python中一切都是对象,字符串是对象,整数型是对象,标准库中的对象当然也是对象,class本身也是对象,类型(type)也是对象。
但是初学的时候会错误地认为,既然大家都是对象,那么应该都是一样的“众生平等”啦。非也非也,尽管都是对象,每个对象支持的方法和属性还是很不一样的啦。
就拿int和自定义的类型来说吧。
int型是python语言的原始类型,上图中所见的就是它所支持的所有操作,如加减乘除,移位,取反等等。
除了面向对象这个特点,Python的另一个特点是它是一种动态语言。好吧,亲,我们来给int对象加上一个自定义属性,何如?
肿么啦,看起来不灵啊。好吧,我们自己建个类型来试试看。
自定义类型Object是个空类型,是一穷二白的状态。没关系,我们来整整。
现在obj已经加上了一个叫做name的属性,再来加上方法吧。
我选择了给类Object加上方法,当然如果你喜欢也可以只给obj实例添加一个方法。方法echo没有做什么石破天惊的事情,
仅仅输出了自己的名字。
一个Object显得有些孤单,我们给他制造个兄弟吧,然后让他兄弟也echo一把。
呀,肿么回事?哦,这个兄弟没有name属性啊,因为之前我们仅仅给他哥哥取了名字。来,接着整。
给类型Object加上name属性,然后看看obj2和obj。
结果如上,一切尽在掌握之中,嘿嘿。通过上面的例子,你应该懂了Python的动态性了(部分而已)。是吧,元芳?!
If you love him, teach him C++, for it's heaven;
If you hate him, teach him C++, for it's hell
If you hate him, teach him C++, for it's hell