Python面向对象之什么是类(1)】的更多相关文章

关于元类,我写过一篇,如果你只是了解元类,看下面这一篇就足够了. Python面向对象之类的方法和属性 本篇是深度解剖,如果你觉得元类用不到,呵呵,那是因为你不了解Django. 在Python中有一个type类,所有的类都是基于type类生成的,可谓万物之母. 如此广袤无垠的python生态圈,都是由type产生出来的. Python面向对象总计包含五大部分: 常用部分: 3.class(类,或者叫实例生成器) 4.instance(实例) 5.实例的各种属性与方法,我们平常使用python时…
封装 一,引子 从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八,小老虎一起装进麻袋,然后把麻袋封上口子.照这种逻辑看,封装='隐藏',这种理解是相当片面的 二,先看如何隐藏 在python中用双下划线开头的方式将属性隐藏起来(设置成私有的) #其实这仅仅这是一种变形操作且仅仅只在类定义阶段发生变形 #类中所有双下划线开头的名称如__x都会在类定义时自动变形成:_类名__x的形式: class A: __N=0 #类的数据属性就应该是共享的,但是语法上是可以把类的数据属性设…
type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello.py模块: class Hello(object): def hello(self, name='world'): print('Hello, %s.' % name) 当Python解释器载入hello模块时,就会依次执行该模块的所有语句,执行结果就是动态创建出一个Hello的class对象,测试如下: >>> fro…
一:知识储备 exec exec:三个参数 参数一:字符串形式的命令 参数二:全局作用域(字典形式),如果不指定,默认为globals() 参数三:局部作用域(字典形式),如果不指定,默认为locals() exec的应用: #可以把exec命令的执行当成是一个函数的执行,会将执行期间产生的名字存放于局部名称空间中 g={ 'x':1, 'y':2 } l={} exec(''' global x,z x=100 z=200 m=300 ''',g,l) print(g) #{'x': 100,…
引子:类的对象在内存中的表示def dog(name,dog_type): def bark(d): print(d,'wang wang wang ...') data = { 'name':name, 'type':dog_type 'bark':bark }调用方法:d1 = dog('小哈','哈士奇')d1['bark'](d1) 可以阻止不同类型角色的方法混用但是同类角色也有不同的地方,这时候快速开发等等需要引入面向对象的概念对象间复杂的关系描述,有相同点也有不同点.需要面向对象的思…
1.C#.Java :只能用面向对象编程 Ruby.Python :函数编程+ 面向对象 面向对象编程不是在所有地方都比函数式编程方便的,类是为了封装,下面是简单的使用方法 在创建类的时候要用class再加上一个类名,然后加上方法,调用类里面的方法必须先实例化一个类,然后使用事例去执行类里面的方法. 每次实例化的时候其实都是如图上一样,先在内存里面开辟一块空间,然后这个实例有一个类内存指针,告诉自己是由那个类创建的 2.在执行类的方法的时候,Python内部会将实例会作为self参数传进去,如下…
Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. 比如: __str__ 与__repr____iter____getitem____call__ __str__ 与__repr__ class Student(object): def __init__(self,name): self.name = name ''' 只有以上的话, print(Student('kumata')) 输出结果:<__main__.Student object at 0x109afb1…
一.类也是对象 只要使用关键字class,Python解释器在执行的时候就会创建一个对象.下面的代码段: class ObjectCreator(object): pass 将在内存中创建一个对象,名字就是ObjectCreator.这个对象(类)自身拥有创建对象(类实例)的能力. 它的本质仍然是一个对象,于是乎你可以对它做如下的操作: 1)   你可以将它赋值给一个变量 2)   你可以拷贝它 3)   你可以为它增加属性 4)   你可以将它作为函数参数进行传递 >>> class…
一.抽象类(规范的编程模式) 什么是抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化.抽象类的本质还是类,指的是一组类的相似性,而接口只强调函数属性的相似性. 为什么要有抽象类 如果说类是从一堆对象中抽取相同的内容而来的,那么抽象类就是从一堆类中抽取相同的内容而来的,内容包括数据属性和函数属性.   抽象类是介于类和接口之间的一个概念,同时具备类和接口的部分特性,可以用来实现归一化设计.在python中,并没有接口类这种东西,即便不通过专门的模块定义接口,我们也应该有一些基…
组合 组合举例组合就是多个类,或者若干类联合起来完成一个任务下面举例两个类联合起来完成一个任务为了降低代码的耦合度,我们一般不会在一个类里实例化另外一个类,都是将一个类在外面实例化后传参到另外一个来这样就带来了一个问题,如果有很多类相互继承,我们就需要在外面实例化很多类最好能动态实例化类并传参(依赖注入),后面讲到 组合举例# 组合就是多个类,或者若干类联合起来完成一个任务# 下面举例两个类联合起来完成一个任务# 为了降低代码的耦合度,我们一般不会在一个类里实例化另外一个类,都是将一个类在外面实…