python面向对象的理解

来源:互联网 发布:java如何执行cmd命令 编辑:程序博客网 时间:2024/05/16 06:55
把数据和功能结合起来,用称为对象的东西包裹起来组织程序的方法。这种方法称为,面向对象的编程理念

对象可以使用普通的属于对象的变量存储数据。属于一个对象或类的变量被称为域。对象也可以使用属于类的函数来具有功能。这样的函数
被称为类的方法。这些术语帮助我们把它们与孤立的函数和变量区分开来。域和方法可以合称为类的属性。

域有两种类型-----属于每个实例/类的对象或属于类本身。它们分别被称为实例变量和类变量。

类使用class关键字创建。类的域和方法被列在一个缩进块中。

类的方法与普通的函数只有一个特别的区别-----它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不必
为这个参数赋值,python会提供这个值。这个特别的变量指向对象本身,按照惯例它的名称是self。

你一定很奇怪python如何给self赋值以及为何你不需要给他赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类
的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由python自动转为
MyClass.method(MyObject, arg1, arg2)------这就是self的原理了
这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。

面向对象的数据它们只是与类和对象的名称空间绑定的普通变量,即这些名称只在这些类与对象的前提下有效。
有两种类型的域-----类的变量和对象的变量,它们根据是类还是对象拥有这个变量而区分。
类的变量,由一个类的所有对象(实例)共享使用。只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个
改动会放映在所有其他的实例上。
对象的变量 由类的每个对象/实例拥有。因此每个对象有自己对这个域的一份拷贝,即他们不是共享的,在同一个类的不同
实例中,虽然对象的变量有相同的名称,但是是互不相关的。

0 0
原创粉丝点击