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

python 面向对象  

时间:2015-06-16 19:32:55      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:面向对象

类和对象


        面向过程和面向对象的编程

               面向过程的编程:函数式编程,c程序等

               面向对象的编程:c++,JAVA ,python等

        类和对象:是面向对象中的两个重要概念

                类:是对事物的抽象,比如:汽车模型(某一类事物的描述,属性和方法)

                对象:是类的一个实例,比如:qq轿车,大客车

        范例说明:

                汽车模型可以对汽车的特征和行为进行抽象,然后可以实例化为一台真实的汽车体现出来


Python类的定义:


            python类的定义:

                    使用class关键字定义一个类,并且类名的首字母要大写

                    当程序员需要创建的类型不能用简单类型表示时就需要创建类;

                    类把需要的变量和函数组合在一起, 这种包含称之为“封装”;

            python类的结构:

                    >>>class 类名:

                    ...                成员变量

                    ...                成员函数

                    ...

            类的创建:范例

#!/usr/bin/python
#coding:utf8
class Ren:                #class关键字,类别首字母大写
    name = "人"           #属性
    high = "一人高"       #属性
    wight = "一人重"      #属性
    def run(self):        #成员函数定义方法;
        print "跑步"
#注意类当中定义成员函数时和外边定义函数时有区别,里边必须有一个形参,用来传递类当中的属性和方法,但调用的时候是不需要传参的

            对象的创建:

                    创建对象的过程称之为实例化,当一个对象被创建后,包含三个方面的特性:对象的句柄、属性和方法。

                    句柄用于区分不同的对象;

                    对象的属性和方法与类中的成员变量和成员函数对应

#!/usr/bin/python
#coding:utf8
class Ren:
    name = ‘人‘
    high = ‘一人高‘
    wight = ‘一人重‘

    def run(self):                           #self 表示自己的类别
        print ‘跑步‘

zhangsan = Ren()                             #从Ren 的类别中实例化一个对象    
print zhangsan
[root@zabbix class]# python class.py
<__main__.Ren instance at 0x7ff7f80110e0>     #instance 实例
#列别中的实例(对象)
#对象zhangsan具有属性和方法,zhangsan的属性就是类别中Ren的成员变量,方法就是类别中的函数

   #属性的访问 (通过对象.)

.....
print zhangsan.high
[root@zabbix class]# python class.py 一人高

   #对象属性的重新赋值

.......
zhangsan.name = "张三"
print zhangsan.name
[root@zabbix class]# python class.py 
张三

#注意:对象是从类别中实例化出来的,它具有类别的属性和方法,同时对象也是一个个体.

zhangsan.money = "10000"
print zhangsan.money
[root@zabbix class]# python class.py 
10000

Python对象的体系结构:

           -经典对象:内部由属性和方法组成,属性可以是数据类型也可以是函数类型。

                             如果属性为函数则该属性就是一个方法。

           -新型对象-定义新型对象,必须继承object方法class_name(object)

                            新型对象提供了对类方法和静态方法的支持                    

                  ....
                  class Ren(object):

类的属性:

         类有属性和方法组成,类的属性是对数据的封装,类的方法则是对类的行为的封装。类的属性按使用范围分为私有属性和公有属性,类的属性范围取决于属性的名称    

         有属性:所谓共有属性就是在类中和类外调用的属性

#!/usr/bin/python
#coding:utf8
class Ren(object):
    name = ‘人‘
    high = ‘一人高‘
    wight = ‘一人重‘
 
    def run(self):
        print self.name            #调用内部属性,self代表本身,访问自己,调用类的属性
        print ‘跑步‘
 
if __name__ == ‘__main__‘:
    zhangsan = Ren()
    zhangsan.name = "张三"
    print zhangsan.name            #外部访问
    zhangsan.run()
    print Ren.name                 #通过类名访问属性


         有属性:不能被类以外的函数调用

#!/usr/bin/python
#coding:utf8
class Ren(object):
    name = ‘人‘
    high = ‘一人高‘
    wight = ‘一人重‘
    __money = ‘1000‘
    def run(self):
        print self.name
        print ‘跑步‘
        
if __name__ == ‘__main__‘:
    zhangsan = Ren()
    zhangsan.name = "张三"
    print zhangsan.__money
[root@zabbix class]# python class.py 
Traceback (most recent call last):
  File "class.py", line 15, in <module>
    print zhangsan.__money
AttributeError: ‘Ren‘ object has no attribute ‘__money‘ #无法调用
#!/usr/bin/python
#coding:utf8
class Ren(object):
    name = ‘人‘
    high = ‘一人高‘
    wight = ‘一人重‘
    __money = ‘1000‘
    def run(self):
        print self.name
        print ‘跑步‘
    def say(self):                  #内部方法中调用
        print self.__money
if __name__ == ‘__main__‘:
    zhangsan = Ren()
    zhangsan.name = "张三"
    print zhangsan.say()            #通过内部调用方法显示,实现对数据的封装、隐藏

        (可以通过instance._classname_attribute方式访问,但只用于调式程序)

    print zhangsan._Ren__money

         定义方式:以“__”双下划线开始的成员变量就是私有属性,否则就是公有属性

         内置属性:有系统在定义类的时候默认添加的,由前后两个下划线构成__dict__,__module__

    ......
    print Ren.__dict__
    [root@zabbix class]# python class.py 
人
##################################################
{‘high‘:
 ‘\xe4\xb8\x80\xe4\xba\xba\xe9\xab\x98‘, ‘__module__‘: ‘__main__‘, 
‘run‘: <function run at 0x7f9ebdb60230>, ‘name‘: ‘\xe4\xba\xba‘, 
‘__dict__‘: <attribute ‘__dict__‘ of ‘Ren‘ objects>, 
‘__weakref__‘: <attribute ‘__weakref__‘ of ‘Ren‘ objects>, 
‘__doc__‘: None, ‘wight‘: ‘\xe4\xb8\x80\xe4\xba\xba\xe9\x87\x8d‘, ‘say‘:
 <function say at 0x7f9ebdb608c0>, ‘_Ren__money‘: ‘1000‘}





本文出自 “思想大于技术” 博客,谢绝转载!

python 面向对象  

标签:面向对象

原文地址:http://linuxboys.blog.51cto.com/9150052/1662343

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