码迷,mamicode.com
首页 > 编程语言 > 详细

python学习第六课 --面向对象

时间:2015-12-12 00:13:32      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:面向对象 特性 成员 方法 属性

面向对象

class Person(object):      --类 

         def __init__(self,name):  --初始化函数  构造方法

                  self.name = name   --

             print ‘---create :’,name

         def say_name(self):   --方法

                  print ‘my name is %s’ %self.name

 

         p1 = Person(gf1)        --实例化

         p2 = Person(‘gf2’)

        

         p1.say_name()   --person.say_name(p1)

         p2.say_name()   --person.say_name(p2)

 

应用场景:1.多个函数需要使用共同的值

                          .需要创建多个事物,每个事物属性个数相同,但是值不相同

特性:

         一、封装 将传进来的变量和类的指针封装在对象中,放在内存里,通过对象直接或self间接来调用变量

                       技术分享

                   

         二、继承 class s(f):  派生类继承了基类里的方法,不用再重复写相同功能的方法

                   多继承,派生类可以继承多个基类,寻找方法的方式有 深度优先与广度优先

                          当类是经典类时,多继承的情况下,深度优先

                          当类是新式类时,多继承的情况下,广度优先

                   如果当前类或者基类继承了object类,则是新式类,否则为经典类

                    经典类:        class c1:          新式类:class c1(object):

                                                             pass                      pass

                                                     class c2(c1):               class c2(c1):

                                                             pass                                         pass

                          

         三、多态        python中没有

 

成员:

         字段 方法和属性

 技术分享       

 

      其中,只有普通字段是封装在对象中,其它都保存在类中,无论有多个对象,它们在内存中只创建一份

  • 字段

                  普通字段、静态字段  

技术分享

                  普通字段由对象访问,静态字段由类访问(对象也可以访问)

                  能否改静态字段?能

                 

  • 方法  

普通方法  由对象调用,至少一个self参数,执行时,自动将调用该方法的对象                      赋给self

                  静态方法        由类调用,没有默认参数,相当于类内的函数,这样就可以不通过对                                        象来调用方法而直接通过类来访问这个方法

                  类方法             由类调用,到少一个cls参数,执行时,自动将调用该方法的类复制                                                   cls;相当于只能带cls参数的静态方法

       

                  class F(object):

                          def __init__(self,name):

                                   self.name =name

                          def f1(self):

                                   pass

                          @classmethod

                          def f2(cls):

                                   pass

                          @staticmethod

                          def f3():

                                   pass

 

                  obj = F()

                  obj.f1()

                  F.f2()

                  F.f3()

 

  • 属性

属性就是普通方法的变种,访问属性时就像访问字段一样

1.   属性的基本使用

技术分享

定义时,在普通方法的基础上添加@property装饰器

定义时,仅有一个self参数

调用时,不需要括号

2.   定义方式

装饰器,即在方法上应用装饰器

          @property  @方法名.setter  @方法名.deleter   (获取 修改 删除)

静态字段,即在类中定义值为property对象的静态字段

字段 = property(方法)

  • 类成员修饰符

                  公有成员        在任何地方都能访问

                  私有成员        只有在类内部才能访问  __name

 

 

 

__dict__ 能不能改?


 

python学习第六课 --面向对象

标签:面向对象 特性 成员 方法 属性

原文地址:http://120662.blog.51cto.com/110662/1722179

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!