Python第16天 类的属性和方法

2018-12-5 08:35:21

2.7 面向对象介绍

  • Python编程,一切皆对象(字符串对象,字典对象。。。)
  • 面向过程和面向对象编程
    面向过程编程: 函数式编程,shell脚本,python脚本,C语言编程等
    面向对象编程: C++,Java,Python等

类和对象

  • 类和对象是面向对象中两个重要的概念
    **类:**是对事物的抽象,比如:人类,球类等
    **对象:**是类的一个实例,比如:男人,足球等
  • 实例说明
    球类可以对求的特征和行为进行抽象,然后实例化一个真实的蓝球、足球等

为什么面向对象
  • 面向对象的主要思想
    封装
    继承
    多态
  • 这种思想方便解决较为复杂的项目,且维护比较容易

面向对象技术简介
  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
  • 方法重载:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重载。
  • 实例变量:定义在方法中的变量,只作用于当前实例的类。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟”是一个(is-a)”关系(例图,Dog是一个Animal)。
  • 实例化:创建一个类的实例,类的具体对象。
  • 方法:类中定义的函数。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

python定义类
  • 类定义
    类把需要的函数和变量组合在一起,这种包含为‘封装’
    class A(object):
  • 类的结构
    class 类名:
    成员变量–> 属性
    成员函数–> 方法
#使用class语句来创建一个新类,class之后为类的名称并以冒号结尾
class ClassName(object):
    a = 'hello'
    def fun(self):
        b = self.a
        print '123456'
        print b
c = ClassName()
c.fun()
---------------------------------
123456
hello
---------------------------------
解析:
a为类的静态属性
fun为类的动态方法,且方法中至少有一个参数self

对象的创建
  • 创建对象的过程称之为实例化
    当一个对象呗创建后包含三个特性:对象句柄、属性和方法
    句柄用于区分不同的对象
    对象的属性和方法与类中的成员变量和成员函数对应
  • obj = ClassName()
    创建类的一个实例(对象)通过对象来调用方法和属性obj.fun(),obj.a

2.8 类的属性

  • 类的属性按使用范围分为公有属性和私有属性,类的属性范围取决于属性的名称
  • **公有属性:**在类中和类外都能被调用的属性
  • **私有属性:**不能再类外及被类以外的函数调用
    定义方式:以‘__’双下划线开始的成员变量就是私有属性
    可以通过instance._classname_attribute方式访问(测试使用)
  • **内置属性:**有系统在定义类的时候默认添加的,由前后双下划线构成‘dict

2.9 类的方法

  • 方法的定义与函数一样,但是需要self作为第一个参数
  • 类的方法分为:
    公有方法:在类中和类以外都能被调用的方法
    私有方法:不能被类的外部调用,在方法前面加‘__’双下划线就是私有方法
    类方法:被classmethod()函数处理过的函数能被类调用,也能被对象调用(继承关系)
    静态方法:被staticmethod()函数处理的,相当于‘全局函数’,可以被类之间调用,可以被所有实例化对象共享,静态方法没有‘self’参数
  • self参数
    用于区分函数和类的方法(必须有一个self),self参数表示执行对象本身
  • 装饰器:
    @classmethod()
    @staticmethod()

给TA打赏
共{{data.count}}人
人已打赏
开发

Python第八天 11月22任务

2023-9-11 18:33:22

开发

Python第33天 Django之中间件

2023-9-11 18:33:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索