关于类,回顾1

最近几天想着看一下scrapy的源码,所以想着回顾一下类,对类进行一个更加深入的了解!!!

python是一门面对对象的语言,但总是函数式编程能称之为面对对象吗?所以python定义了一个新的对象—-类,它是python面对对象程序设计的主要工具

其实,虽然说python中的一切都是对象,但真正能体现python灵活好用的我觉得非类这个对象不可,它可以实现行为的定制,继承,修改;对python代码的重用也是发挥到了极致,使用类我们可以减少很多不必要的重复代码!

类由class语句创建,和def语句一样,class语句创建了一个类对象,并将该对象赋值给了类头的变量名。也就是说,定义一个类也是一个赋值语句哦!!!!

在类的学习中我们主要熟悉两个对象—–类对象和由类产生的实例对象。他们各自独立却又相互关联。

类由语句产生:

class new_Class:
    def func(self):
        pass
    ...
# 该语句产生了一个类对象

实例由类产生

instance = new_Class()
# 该赋值语句产生了一个类的实例
# 通过类似于函数赋值的方式,类可以产生一个实例

也就是说,类对象是产生实例对象的工厂!!!!

类之所以强大,在于它的三个特性:
**

  1. 多重实例:类是产生实例的工厂
  2. 通过继承可以定制类的行为:通过子类继承的超类的行为可以对超类中的某些属性进行修改,而保留继承未被修改的属性
  3. 强大的运算重载符:通过一个特定的协议,类定义了一些强大的运算方式

**
第一个特性:类可以产生实例:
上面我们知道,通过赋值语句,类可以产生实例对象,那实例对象和类对象的区别和联系又在哪里呢??

  • 首先是命名空间的问题:类和由类产生的实例都有自己独立的命名空间,也就是说他们都有自己的地方放自己的东西(属性),只不过类的命名空间可以和实例共享,而实例就比较鸡贼,它的命名空间,类摸都摸不到(换句话说:实例可以使用类的属性,而类就不能使用实例的属性)
  • 类和实例的数据:其实在很大程度上类和实例是一样的,都是属性的容器。
  • 解释上面一条我们就要具体讲一下类和实例的属性了:
    类的属性由语句产生,class语句内所有顶层赋值语句都产生了这个类的属性,可以由类直接调用,或者由子类和实例调用

    什么是顶层赋值语句?
    就是不在def赋值语句之内的赋值语句

    实例的属性包括了类的属性和实例在def语句内定义的属性其中包括在def语句内的属性只能由这个实例才能调用

还要强调一点:实例的def定义的方法(函数)和我们平时使用的函数式一模一样的,别给它什么特权,没有!!!

猜你喜欢

转载自blog.csdn.net/killeri/article/details/80419520