zoukankan      html  css  js  c++  java
  • Python学习 Day 7 面向对象 类和实例 访问限制

    面向对象编程

    面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

    面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。

    而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。

    在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。

    类和实例

    类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

    定义类是通过class关键字

    class Student(object):# 定义类是通过class关键字

    pass

    >>> bart = Student()

    >>> bart

    <__main__.Student object at 0x10a67a590>

    >>> Student

    <class '__main__.Student'>

    >>>class Student(object):

    def__init__(self, name, score):

    self.name = name

    self.score = score

    和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。

    数据封装

    >>> defprint_score(std):
    ...     print'%s: %s' % (std.name, std.score)
    ...
    >>> print_score(bart)
    Bart Simpson: 59
    classStudent(object):
     
        def__init__(self, name, score):
            self.name = name
            self.score = score
     
        defprint_score(self):
            print'%s: %s' % (self.name, self.score)

    类是创建实例的模板,而实例则是一个一个具体的对象,各个实例拥有的数据都互相独立,互不影响;

    方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据;

    通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节。

    和静态语言不同,Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同

    访问限制

    在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问

    classStudent(object):

    def__init__(self, name, score):

    self.__name = name

    self.__score = score

    defprint_score(self):

    print'%s: %s' % (self.__name, self.__score)

  • 相关阅读:
    现在,为什么连一个 JavaScript 的厌恶者都认为:每个开发人员都应该学习 JavaScript
    .NET 部署_ASP.NET 部署的八大关键实践
    Ext.Net 1.2.0_Ext.Net.DateColumn 日期格式问题
    Ext.Net 1.2.0_Ext.UX.GMapPanel Google Map 插件
    Yahoo Web UIs——Java开发者丰富的Web UI
    单元测试_使用 Nmock 单元测试 .NET 业务对象
    公共语言运行库中的程序集05程序集安全注意事项
    Entity Framework_成功针对多种数据库使用实体框架(EF)
    反射_01概述和反射中的运行时类型以及查看类型信息
    公共语言运行库中的程序集01概述
  • 原文地址:https://www.cnblogs.com/jpld/p/4459193.html
Copyright © 2011-2022 走看看