(1)Python初学——类——属性

来源:互联网 发布:js获取padding的值 编辑:程序博客网 时间:2024/05/16 12:02


  • 类的所有实例方法都必须至少有一个名为self的参数,并且必须是方法的第一个形参。self参数代表对象本身,在类的实例方法中访问实例属性必须要以self为前缀,但是在外部通过类名调用对象方法则需要显示为self参数船传值。



  • 实例属性一般是在构造函数__init__中定义的,定义和使用时必须以self为前缀。类属性是在类中所有方法之外定义的。实例属性属于实例对象,只能通过对象名访问,而类属性属于类,可以通过类名和对象名访问。



  • Python中比较特殊的是,可以动态的为类和对象增加成员,这一点和许多面向对象的程序设计语言不同,是Python动态语言的一种体现。


  • 私有属性是为了数据封装和保密而设置的属性,一般只在类的成员方法使用访问,Python支持一种特殊的方式来从外部访问类的私有成员。



  • _xxx:这样的对象叫做保护成员,不能用‘from module import *’导入,只有类对象和子类对象能访问这些成员。

__xxx__:系统定义的特殊成员。

__xxx:类中的私有成员,只有类对象自己能访问,子类对象也不能访问,但在对象外部可以通过‘’对象名._类名__.xxx''这样的特殊方式来访问。Python中不存在严格意义上的私有成员。



  • 在构造函数中,程序对公有变量设置了初始值(初始化),可以在构造函数中使用参数,通常使用参数来设置成员变量(特别是私有变量)的值。

术语解释:实例变量 = 实例属性=实例对象的属性 = 成员变量 ;类变量 = 类属性

  • 静态变量:

静态变量或者静态方法与具体的对象没有关系,它只属于定义它的类。Python不需要显示地定义静态变量,任何公有变量都可以作为静态变量使用,访问静态变量的方法如下:

类名.静态变量。虽然可以通过对象名访问静态变量,但是同一个变量,通过类名访问和通过对象名访问实例不同,互不干扰。


class A(object):

    online = 0

    def __init__(self):#构造函数,创建对象时A.online加1

        a.online+=1

    def__del__(self):#析构函数,释放对象时,A.online减1

        a.online-=1

    a = A()

    a.online+=1

    print a.online

程序首先创建了一个A的对象a,此时会执行一次构造函数,因此A.online的值等于1,然后程序执行a.online +=1,使用对象调用on林恩,此时不会影响静态变量的A.online的值,因此最后打印A.online的值时,结果为1.

 
原创粉丝点击