python 面向对象的概念

对象对象编程三原则

1,封装(隐藏具体实现过程,对外只提供调用接口)

2,继承(一个对象或得另一个对象属性的过程,用于实现按层分类的概念)

3,多态(允许一个接口被一个通用的类动作使用的特性,具体使用哪个动作与应用场合有关)


python的类是一种数据结构,是自定义的类型。

python 中class语句类似def ,是可以执行的代码;直到运行class语句后类才会存在

class语句内,任何赋值语句都会创建类属性

每个实例对象对会继承类的属性并或得自己的名称空间

在OOP编程中,实例就像是带有“数据”的记录,而类是处理这些记录的“程序”

通过实例调用方法相当于调用所属类的方法来处理当前实例

类似:instance.method(args...)会被自动转换为:class.method(instance,args ....)

如前面的例子,x.display()会被自动转换为:FirstClass.display(x),即调用类的方法来处理实例X

1,因此类的每个方法必须具有self参数,它隐含当前实例之意

2,在方法内对self属性做赋值运算会产生每个实例自己的属性,Python规定,没有实例,方法不允许被调用,此即为“绑定”

Class语句中的赋值语句会创建类属性,如前面例子中的spam,在类方法中对传给方法的特殊参数self进行赋值会创建实例的属性

如:

>>>class MyClass():

            gender = 'male'   #类属性

            def setName(self,who):

                                  self.name = who

>>>x=MyClass()

>>>y=MyClass()

>>>x.gender

'male'

>>>x.name #报错 因为在setName方法调用之前,MyClass 类不会把name属性附件到实例X上,当然也可以重载__ini___ 创建构造器直接为实例提供


3,Python 中以__vars__()之类的方法,都是被python调用中,有解释器自动执行的

具体到类,python创建实例时,会自动调用类中的__int__方法,以隐性地为实例提供属性

__ini__方法被称为构造器。如果类中没有定义__init__方法,实例创建之初仅是一个简单的名称空间

如:

>>>class MyClass():       #这里如果传参,是传的基类,不是初始属性

 >>>                data = 'hello world'

  >>>              def __init__(self,x):

   >>>                                 self.str1=x

可以通过a1=MyClass('shitian') #实例类,并重载赋值给str1 ,

            


 

请先 登录 后评论
  • 0 关注
  • 0 收藏,511 浏览
  • 石天 提出于 2016-11-13 17:56

相似问题